mysql特殊日期输出格式

时间:2014-06-27 11:53:32

标签: php mysql sql date

作为在服务器端使用php / mysql和在客户端使用JS / jQuery的实时聊天脚本的一部分,我想以特殊格式输出每条消息的日期。

如果今天发送消息(例如):Today 22:30, 如果它是昨天发送的:Yesterday 12:30 如果它是在昨天之前发送的,它应该输出这个日期格式:dd.mm.yy H:i (for example 28.05.14 22:19)

当然我知道我可以轻松地用PHP做到这一点,但为了更好的性能,我想用SQL做到这一点。

我在mysql文档中已经阅读了很多内容,但是我发现很多日期格式化,我找不到这样的东西。

现在我想知道这是否可以用SQL?

每条消息的日期都作为TIMESTAMP存储在数据库中。

1 个答案:

答案 0 :(得分:0)

使用以下查询。它必须满足您的要求(有或没有一些修改)。

SELECT IF(DATE_FORMAT(`created`, '%Y-%m-%d') = DATE(NOW()),
    'TODAY ' + DATE_FORMAT(`created`, '%k:%i'),
    (SELECT IF(DATE_FORMAT(`created`, '%Y-%m-%d') < DATE(NOW()),
        (SELECT IF(DATE_FORMAT(`created`, '%Y-%m-%d') = (DATE(NOW() - INTERVAL 1 DAY)),
            'YESTERDAY ' + DATE_FORMAT(`created`, '%k:%i'),
            DATE_FORMAT(`created`, '%d-%m-%y %k:%i'))),
            'NO DISPLAY'
        )
    )
) FROM user;

注意:此处'created'是我打算从用户表中获取的日期。

对于 DATE_FORMAT()函数说明及使用的参数,请检查此链接http://www.w3schools.com/sql/func_date_format.asp

希望能帮助到你 。 。