首页 > 解决方案 > 如何按降序排序 MySql 的 Varchar 日期?

问题描述

我将日期时间存储在表中的 varchar 中。这是我的日期时间格式:12/13/2019 12:05:30 PM。我想按降序对这些日期进行排序。这是我的 sql

SELECT CreatedOn FROM advweb_usertemplatedesign Where UserId = 'fa69147ca33746cd8700a892298b11de' And ActiveStatus = 1 Order by CreatedOn Desc Limit 20

我得到的结果是

12/5/2019 5:48:19 PM
12/4/2019 4:49:10 PM
12/3/2019 5:57:16 PM
12/13/2019 12:05:30 PM
12/12/2019 6:01:31 PM

代替

12/13/2019 12:05:30 PM
12/12/2019 6:01:31 PM
12/5/2019 5:48:19 PM
12/4/2019 4:49:10 PM
12/3/2019 5:57:16 PM

如何正确排序?谢谢你。

标签: mysql

解决方案


您应该避免将日期存储为字符串。作为临时解决方法,您可以STR_TO_DATE在此处使用 MySQL 的功能:

SELECT CreatedOn
FROM advweb_usertemplatedesign
WHERE
    UserId = 'fa69147ca33746cd8700a892298b11de' AD
    ActiveStatus = 1
ORDER BY
    STR_TO_DATE(CreatedOn, '%m/%d/%Y %r') DESC
LIMIT 20;

推荐阅读