作为在服务器端使用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存储在数据库中。
答案 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
希望能帮助到你 。 。