Mysql排序顺序日期0000-00-00第一

Posted

技术标签:

【中文标题】Mysql排序顺序日期0000-00-00第一【英文标题】:Mysql sort order date 0000-00-00 first 【发布时间】:2019-12-07 16:25:19 【问题描述】:

下面的 mysql 查询有效,但不是我喜欢的方式。

有些帖子的日期为0000-00-00。我怎样才能先列出这些,然后再列出其余的。

SELECT *
FROM posts
ORDER BY posts.created DESC

示例结果

0000-00-00 - A post
0000-00-00 - Another post
2019-02-03 - New post
2011-01-01 - Old post

【问题讨论】:

【参考方案1】:

一种方法是添加显式键:

SELECT p.*
FROM posts p
ORDER BY (p.created = '0000-00-00') DESC,
         p.created DESC

【讨论】:

【参考方案2】:

试试:

创建视图 test1 作为 选择页* 来自帖子 p WHERE p.created = '0000-00-00';

创建视图 test2 作为 选择页* 来自帖子 p WHERE p.created '0000-00-00' ORDER BY p.created DESC;

创建视图 t_final AS ( 选择 * 从测试1 联合所有 选择 * 来自测试2 )

【讨论】:

以上是关于Mysql排序顺序日期0000-00-00第一的主要内容,如果未能解决你的问题,请参考以下文章

从 MySQL 日期字段中阻止“0000-00-00”

MySQL Workbench - 表数据导入向导将所有日期时间对象写入 0000-00-00 00:00:00

如何在java中处理具有值“0000-00-00 00:00:00”的日期[重复]

mysql的时间格式成了0000-00-00,怎么在库里改呢?

SQL条件排序依据?

如何在MySQL DATETIME字段中存储DATE / TIME / YEAR?