3
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 排序?

4

3 回答 3

4

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

要使行按顺序排序,您可以将值的字符表示转换为 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

于 2012-08-23T21:41:10.487 回答
3

你会想要使用STR_TO_DATE()

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

请参阅带有演示的 SQL Fiddle

于 2012-08-23T21:43:41.283 回答
2

只需添加DESC

SELECT * FROM table ORDER BY timestamp DESC;
于 2012-08-23T21:37:40.257 回答