在MySQL查询中格式化日期的最佳方法是什么?
我目前正在运行下面的查询,该查询选择了数据,但没有正确排序信息,我认为这是由于' updatetime'的当前格式。行。
SELECT * FROM updates WHERE udcode='Remote Connection' ORDER BY updatetime DESC LIMIT 20;
目前的格式如下:
31/03/2015 13:41:45
如何对日期进行格式化以使ORDERING正常工作?
提前致谢。
答案 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;