mySQL按日期排序字段不起作用

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

我试图得到一个数据排序从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 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?