在MySQL中通过DESC订购日期/时间VARCHAR

时间:2018-03-08 21:07:55

标签: mysql sql-order-by

我有这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。我需要使用哪些函数来正确构造此查询,以及生成的查询是什么?

1 个答案:

答案 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小时。