首页 > 解决方案 > 获取mysql查询中两个日期列之间的最高日期

问题描述

您好,我有两列多行的日期时间,我想在所有记录的两列之间获取最新日期(最高)的行。请检查以下内容:

 ID|Date1                 |Date2
 1 |2021-06-10 19:03:36   |Null
 2 |2021-06-11 19:33:41   |2021-06-16 09:49:41
 3 |2021-06-16 20:04:24   |Null

我想从两列(Date1 和 Date2)的所有记录中获取最高日期。从上表中,我想要第三行日期,因为这是两列所有记录中的最高日期(2021-06-16 20:04:24)。如果我们将 date1 列的第 3 行更改为 2021-06-16 09:20:41,那么结果将是第 2 行,因为在 date2 中找到了最高日期记录。请帮助我创建 mysql 查询以获取完整数据行

标签: mysql

解决方案


如果您只想要结果中的 1 行并且您不关心平局,则使用GREATEST()获取每行中的最大日期,按该最大日期降序排序并用于LIMIT 1选择第一行:

SELECT *
FROM tablename
ORDER BY GREATEST(COALESCE(Date1, '1000-01-01'), COALESCE(Date2, '1000-01-01')) DESC 
LIMIT 1

如果Date1不可为空COALESCE(),仅用于Date2

SELECT *
FROM tablename
ORDER BY GREATEST(Date1, COALESCE(Date2, '1000-01-01')) DESC 
LIMIT 1

请参阅演示


推荐阅读