所以我想在查询中添加 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 问题,我想我应该在这里问。谢谢!
最佳答案
那是因为您正在使用 GROUP BY
(错误地)并且 MySQL 不保证排序的顺序。如果正确使用该功能,您将获得理想的结果。
关于php - 如何以 2013-02-27 00 :00:00 so I can use it with ORDER BY? 形式转换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992038/