php - 如何以 2013-02-27 00 :00:00 so I can use it with ORDER BY? 形式转换日期

标签 php mysql sql-order-by

所以我想在查询中添加 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 不保证排序的顺序。如果正确使用该功能,您将获得理想的结果。

参见 MySQL Extensions to GROUP BY .

关于php - 如何以 2013-02-27 00 :00:00 so I can use it with ORDER BY? 形式转换日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14992038/

相关文章:

SQL Server : ORDER BY variable column CASE statement with NULL values

php - Firebird 程序不仅在 PDO 中执行

PHP date() 和 time() 提前服务器约 3 分钟

php - 我如何使用数组中的值? (php)

php - 使用 PDO 进行多次插入

python - 在 Django 模板中对相关项目进行排序

php - PDO/MySQL : Underscore ('_' ) wildcard in PHP seems escaped by default

php - Laravel 迁移在表中分配 2 个主键

MySQL - 按新列分组

mysql - 明确指定 mysql 查询的排序顺序?