我想用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')
答案 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')