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 列的引用。