mysql - 获取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 查询以获取完整数据行
解决方案
如果您只想要结果中的 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
请参阅演示。
推荐阅读
- c# - Xamarin.Essentials 共享可绘制对象
- java - 在 servlet 中将 InputStream 转换为 Json 的更好或更快的方法
- html - 如何在 TWebBrowser 中居中和拉伸/收缩 SVG 显示?
- flutter - Flutter 中未设置 PluginRegistrantCallback
- python - Python:按时间戳更新的 MongoDB 未按预期工作
- haproxy - HA 代理 - 在同一域 ACL 上同时使用 HTTP 和 HTTPS
- go - 使用 Micro.mu 启动微服务时出现权限错误
- angular - 使用tinymce(tinymce-angular)专注于textarea
- azure - 预期 application_type 是 [web other java MobileCenter phone store ios Node.JS] 之一,得到了 Web
- apache - 如何使用 apxs2 编译包含 sds 库的 apache 模块