2013-02-20 18 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

相關問題