我有一个日期要显示为“ Quarters”,但不能显示除NULL以外的任何内容(否则会显示错误)。我想以“ 2015 Q1”结尾,其中endtime当前为1422748800(2015年2月1日)。

这是我目前的尝试:

IF (
    stock.engine = 1,
    concat(
        YEAR(endtime), ' Q', QUARTER(endtime)
        )
    , NULL) as QTR1


我也尝试过fomatting endtime(Unix格式)作为

DATE_FORMAT(FROM_UNIXTIME(endtime), '%Y')


看来,无论我做什么,同一行都会不断抛出错误,或者仅显示为NULL。如何解决此问题以便正确显示?

编辑:

我不知道这是否相关,但是我还是把它放在这里。表中的数据可以有多个...像这样:

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

关于mysql - 使用UNIX TIME的带IF和QUARTER的MySQL SELECT,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/30920740/

10-12 16:30
查看更多