按日期排序的MySQL日期格式

时间:2016-02-17 11:44:16

标签: mysql sql

在MySQL查询中格式化日期的最佳方法是什么?

我目前正在运行下面的查询,该查询选择了数据,但没有正确排序信息,我认为这是由于' updatetime'的当前格式。行。

SELECT * FROM updates  WHERE udcode='Remote Connection' ORDER BY updatetime DESC  LIMIT 20;

目前的格式如下:

  

31/03/2015 13:41:45

如何对日期进行格式化以使ORDERING正常工作?

提前致谢。

4 个答案:

答案 0 :(得分:2)

使用:

ORDER BY DATE_FORMAT(updatetime, '%Y-%m-%d %H:%i:%S') DESC

答案 1 :(得分:0)

您可以使用DATE_FORMAT

更改MySQL中日期的格式
SELECT *, DATE_FORMAT(`updatetime`, '%Y-%m-%d %H:%i:%S') AS mydate FROM updates WHERE udcode='Remote Connection' ORDER BY mydate DESC LIMIT 20;

http://dev.mysql.com/doc/refman/5.7/en/date-and-time-functions.html#function_date-format

答案 2 :(得分:0)

您在查询中正确执行此操作,但是如果您收到不需要的结果,则更新时间属性的数据类型可能不正确。

您应该使用datetime作为数据类型,以便查询能够正确区分信息是日期并知道如何正确排序。例如,如果您使用varchar,它会认为从左到右的第一个数字读数是最重要的,而不是识别天,月,年和时间之间的差异和关系。

如果您没有正确的数据类型,则必须在膨胀的查询中包含格式,或者您最终会在20-29之前订购10-19的所有日期,然后是3-9天。在这种情况下,例如,第30次将被认为是在第4次之前订购。

当您订购数月或数年时,几乎没有相关性因为单位会混淆一切

答案 3 :(得分:0)

您可以尝试以下更改

将日期格式更改为

yyyy-mm-dd hh:mm:ss

将查询编辑为

SELECT * FROM updates  WHERE udcode='Remote Connection' ORDER BY `updatetime` DESC  LIMIT 0, 20;