我有这3个VARCHAR数据:
Mar 06 2018 06:42:08
Mar 04 2017 23:21:15
Feb 21 2018 14:48:46
Jul 29 2016 11:56:22
Mar 06 2018 06:41:54
我想知道如何构建查询:
SELECT `users`.`last_online` FROM `users` ORDER BY ... DESC
这样我就可以获得以下输出
Mar 06 2018 06:42:08
Mar 06 2018 06:41:54
Feb 21 2018 14:48:46
Jul 29 2017 11:56:22
Mar 04 2017 23:21:15
注意我不想使用DATETIME,我使用的是VARCHAR,请不要另外建议。
更新
我根据Uuerdo回答的文档尝试了以下查询,但是虽然看起来它会起作用,但它没有:
SELECT `users`.`last_online` FROM `users` ORDER BY STR_TO_DATE(`users`.`last_online`, '%M %d %Y %h:%i:%s') DESC
我需要考虑MM/DD/YYYY H:i:S
。我需要使用哪些函数来正确构造此查询,以及生成的查询是什么?
答案 0 :(得分:1)
尝试使用:
SELECT `users`.`last_online`,
FROM `users`
ORDER BY STR_TO_DATE(`users`.`last_online`, '%M %d %Y %H:%i:%s') DESC
您需要使用'%H'代替'%h'24小时。