按日期时间按AM PM排序

时间:2014-04-22 08:37:32

标签: mysql

我想用datetime字段来编写一个select查询。我的日期时间字段采用以下格式

 2014-04-21 05:30 PM
 2014-04-21 06:30 AM
 2014-04-21 10:30 AM

我正在尝试以下方法,但它无效

 SELECT * 
 FROM table 
 ORDER BY STR_TO_DATE(`date_time`,'%h.%i%p')

3 个答案:

答案 0 :(得分:1)

如果您使用正确的格式字符串,它会起作用;)

 ORDER BY STR_TO_DATE(`date_time`,'%Y-%c-%e %h:%i %p')

例如,请参阅此fiddle

Reference.(搜索"格式字符串中可以使用以下说明符。格式说明符字符前需要“%”字符。"显示可用格式表字符串值)

答案 1 :(得分:1)

您需要使用DATETIME以适当的格式保存日期,这会让生活更轻松。 但是在你的情况下,你可以做

SELECT *
FROM table
ORDER BY date_format(STR_TO_DATE(`date_time`,'%Y-%m-%d %h:%i %p'),'%Y-%m-%d %H:%i:%s');

<强> DEMO

答案 2 :(得分:1)

这是对我有用的解决方案:

ORDER BY STR_TO_DATE(date_time,'%Y-%m-%d %l:%i %p')