MySQL SELECT IF 和 QUARTER 使用 UNIX TIME
MySQL SELECT with IF and QUARTER using UNIX TIME
我有一个日期,我试图将其显示为 'Quarters',但我只能显示 NULL
(否则会出错)。我想以“2015 Q1”结尾,其中 endtime
目前是 1422748800
(2015 年 2 月 1 日)。
这是我目前的尝试:
IF (
stock.engine = 1,
concat(
YEAR(endtime), ' Q', QUARTER(endtime)
)
, NULL) as QTR1
我也试过将 endtime
(Unix 格式)格式化为
DATE_FORMAT(FROM_UNIXTIME(endtime), '%Y')
似乎无论我做什么,同一行都会不断抛出错误或者它只显示为 NULL
。如何解决这个问题才能正确显示?
编辑:
我不知道这是否相关,但我还是会把它放在这里。 table 中的数据可以有多个...像这样:
table: stock
userid name engine endtime
1 Robert Griffin 1 1422748800
1 Robert Griffin 2 1422752615
2 Daryl Jones 4 1422939585
3 Patrick Daniels 3 1422858023
3 Patrick Daniels 4 1423047328
等等
我认为你需要 from_unixtime()
。看起来你的日期是以这种格式存储的。所以:
select (case when stock.engine = 1
then concat(year(from_unixtime(endtime)), ' Q', quarter(from_unixtime(endtime))
end) as QTR1
鉴于您将 endtime
存储为整数,您可以使用 FROM_UNIXTIME()
函数将其转换为 datetime
,然后使用 MySQL 内置函数在 datetime
值上。
作为演示:
SELECT CONCAT(DATE_FORMAT(FROM_UNIXTIME(1422748800),'%Y Q'),QUARTER(FROM_UNIXTIME(1422748800))) AS qtr
returns:
qtr
-------
2015 Q1
将文字整数值替换为对您的(整数)endtime
列的引用。
我有一个日期,我试图将其显示为 'Quarters',但我只能显示 NULL
(否则会出错)。我想以“2015 Q1”结尾,其中 endtime
目前是 1422748800
(2015 年 2 月 1 日)。
这是我目前的尝试:
IF (
stock.engine = 1,
concat(
YEAR(endtime), ' Q', QUARTER(endtime)
)
, NULL) as QTR1
我也试过将 endtime
(Unix 格式)格式化为
DATE_FORMAT(FROM_UNIXTIME(endtime), '%Y')
似乎无论我做什么,同一行都会不断抛出错误或者它只显示为 NULL
。如何解决这个问题才能正确显示?
编辑:
我不知道这是否相关,但我还是会把它放在这里。 table 中的数据可以有多个...像这样:
table: stock
userid name engine endtime
1 Robert Griffin 1 1422748800
1 Robert Griffin 2 1422752615
2 Daryl Jones 4 1422939585
3 Patrick Daniels 3 1422858023
3 Patrick Daniels 4 1423047328
等等
我认为你需要 from_unixtime()
。看起来你的日期是以这种格式存储的。所以:
select (case when stock.engine = 1
then concat(year(from_unixtime(endtime)), ' Q', quarter(from_unixtime(endtime))
end) as QTR1
鉴于您将 endtime
存储为整数,您可以使用 FROM_UNIXTIME()
函数将其转换为 datetime
,然后使用 MySQL 内置函数在 datetime
值上。
作为演示:
SELECT CONCAT(DATE_FORMAT(FROM_UNIXTIME(1422748800),'%Y Q'),QUARTER(FROM_UNIXTIME(1422748800))) AS qtr
returns:
qtr
-------
2015 Q1
将文字整数值替换为对您的(整数)endtime
列的引用。