如何通过mysql中的时间戳排序?

时间:2012-08-23 21:33:19

标签: mysql

SELECT * FROM table ORDER BY timestamp;

当我尝试按时间戳订购记录时,我收到以下订单

08/20/2012 02:09:39 PM
08/20/2012 03:19:08 PM
08/20/2012 09:04:24 AM
08/20/2012 09:05:25 AM

如何更改查询以便从AM到PM订购记录?

3 个答案:

答案 0 :(得分:3)

问题是时间戳的字符串表示形式不是规范格式,也就是说,排序字符串值不按时间戳顺序排序。

要按顺序排序行,可以将值的字符表示形式转换为DATETIME或TIMESTAMP数据类型,或者至少转换为规范格式的字符表示形式(例如'YYYY-MM-DD hh:mm: ss'有24小时制。)

STR_TO_DATE函数对于将已知格式的字符串表示转换为DATETIME非常有用:

SELECT * FROM table
ORDER BY STR_TO_DATE(`timestamp`,'%m/%d/%Y %h:%i:%s %p')

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

答案 1 :(得分:3)

您需要使用STR_TO_DATE()

select *
from dates
order by STR_TO_DATE(dt,'%m/%d/%Y %h:%i:%s') desc

请参阅SQL Fiddle with demo

答案 2 :(得分:0)

只需添加DESC

SELECT * FROM table ORDER BY timestamp DESC;