2013-02-20 54 views
0

所以,我想在我的查询中添加ORDER BY,但它不起作用,因为日期字段的格式为2013-02-27 00:00:00。我该如何转换它以便我可以在ORDER BY中使用它?这里是我的查询:如何将表格中的日期转换为2013-02-27 00:00:00,以便我可以将它与ORDER BY一起使用?

$sql = "SELECT * FROM $wpdb->posts"; 
    $sql .= " INNER JOIN $wpdb->postmeta ON $wpdb->posts.ID = $wpdb->postmeta.post_id"; 
    $sql .= " WHERE $wpdb->posts.post_type = 'task'"; 
    $sql .= " AND $wpdb->postmeta.post_id IN (SELECT `post_id` FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = '_completed' AND $wpdb->postmeta.meta_value = '0')"; 
    $sql .= " AND $wpdb->postmeta.post_id IN (SELECT `post_id` FROM $wpdb->postmeta WHERE $wpdb->postmeta.meta_key = '_assigned' AND $wpdb->postmeta.meta_value = '%s')"; 
    $sql .= " GROUP BY $wpdb->postmeta.post_id"; 
    $sql .= " ORDER BY $wpdb->postmeta._due ASC"; 

    $tasks = $wpdb->get_results(sprintf($sql, $user_id)); 

领域的问题是,在表wp_postmeta_due。这是为Wordpress,但因为这是一个MYSQL问题,我想我会问这里。谢谢!

+3

这正是你想要的日期排序格式。你在问这个问题有什么不管用? – 2013-02-20 23:42:17

+0

@John Conde它不工作,因为它无法识别该字段中的格式?我不知道,但如果我用'ORDER BY'来使用这个字段,它就不起作用。 – adredx 2013-02-20 23:44:39

+0

你的'$ wpdb-> XXX'变量被替换为'$ sql'吗?你不需要在他们周围放置{}吗? – Barmar 2013-02-20 23:58:56

回答

3

这是因为您使用的是GROUP BY(错误地),MySQL不保证排序的顺序。如果您正确使用该功能,您将获得理想的结果。

请参阅MySQL Extensions to GROUP BY

相关问题