用于按日期排序的MySQL日期格式

用于按日期排序的MySQL日期格式,mysql,sql,Mysql,Sql,在MySQL查询中格式化日期的最佳方式是什么 我目前正在运行下面的查询,该查询选择了数据,但没有正确排序信息,我认为这是由于“updatetime”行的当前格式造成的 SELECT * FROM updates WHERE udcode='Remote Connection' ORDER BY updatetime DESC LIMIT 20; 目前的格式如下: 2015年3月31日13:41:45 该日期应如何格式化,以便订单正常工作 提前感谢。使用: ORDER BY DATE_FOR

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

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

SELECT * FROM updates  WHERE udcode='Remote Connection' ORDER BY updatetime DESC  LIMIT 20;
目前的格式如下:

2015年3月31日13:41:45

该日期应如何格式化,以便订单正常工作

提前感谢。

使用:

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

您可以使用date\u格式在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;

您在查询中的操作是正确的,但是,如果您得到了不需要的结果,则可能是updatetime属性的数据类型不正确

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

如果您没有正确的数据类型,那么您要么必须在臃肿的查询中包含格式,要么您将在20-29之前订购10-19的所有日期,然后是第3-9天。在这种情况下,30号订单将被视为在4号之前订购


当您订购月或年时,相关性将很小,因为日单位会将所有内容混合在一起

您可以尝试以下更改

将日期格式更改为

yyyy-mm-dd hh:mm:ss
并将查询编辑为

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

updatetime
列的数据类型是什么?是字符串还是日期时间?不是varchar,对吗?只要是日期类型,格式就可以识别我的日期?谢谢你的回答,Dylan,我现在可以工作了。