mySQL按日期排序字段不起作用
我试图得到一个数据排序从2表职位和邮递 wp_posts表示例mySQL按日期排序字段不起作用,mysql,sql-order-by,Mysql,Sql Order By,我试图得到一个数据排序从2表职位和邮递 wp_posts表示例 ID post_title post_name 328 Test Event Five test-event-five 326 Test Event Four test-event-four 324 Test Event Three test-event-three 321 Test Event Two test-event-two 320 Test Event O
ID post_title post_name
328 Test Event Five test-event-five
326 Test Event Four test-event-four
324 Test Event Three test-event-three
321 Test Event Two test-event-two
320 Test Event One test-event-one
示例wp_PosteTa表
id post_id meta_key meta_value
1 328 calendar_start-date August 08, 2012
2 326 calendar_start-date August 09, 2012
3 324 calendar_start-date September 06, 2012
4 321 calendar_start-date August 23, 2012
5 320 calendar_start-date September 17, 2012
为了输出按元数据中日期排序的数据,我使用了查询
SELECT wp_posts.ID,
wp_posts.post_title,
wp_posts.post_name,
wp_postmeta.post_id,
wp_postmeta.meta_value as event_date
FROM wp_posts, wp_postmeta
WHERE wp_posts.ID = wp_postmeta.post_id
AND wp_postmeta.meta_key = 'calendar_start-date'
AND wp_posts.post_status = 'publish'
AND wp_posts.post_type = 'calendar'
ORDER BY DATE_FORMAT( event_date, '%M %d, %Y' ) DESC
LIMIT 0 , 30
但结果不是按日期排序的,而是按时间顺序排列的
ID post_title post_name post_id event_date
328 Test Event Five test-event-five 328 August 08, 2012
326 Test Event Four test-event-four 326 August 09, 2012
324 Test Event Three test-event-three 324 September 06, 2012
321 Test Event Two test-event-two 321 August 23, 2012
320 Test Event One test-event-one 320 September 17, 2012
我在查询中哪里出错了?如何显示按事件日期正确排序的记录。通过UI/Datepicker,日期的输入格式为MM-dd,yy。函数
date\u format
将日期格式化为字符串。但你想做相反的事情。为此,请使用函数STR\u To\u DATE
:
ORDER BY STR_TO_DATE(event_date, '%M %d, %Y') DESC
有关MySQL中日期函数的更多详细信息,请参阅。
date\u格式将日期时间数据类型转换为字符串。当它失败时,它不会抱怨,它只返回NULL。这就是为什么您的查询能够工作,即使ORDER BY没有工作
您需要使用STR\u to\u DATE
来完成您的任务。日期是保存为DATE还是VARCHAR?