mysql - MySQL 从 DATETIME 中选择整个最旧的一天
问题描述
请帮助我:-) 这对我来说绝对是新的,我不知道该怎么做。
我有具有这种结构和这些值的 MySQL 表:
material_id (INT) | material_referenceid (INT) | material_cas(日期时间) |
---|---|---|
2 | 13 | 2021-11-01T17:19:08Z |
10 | 13 | 2021-11-08T17:19:28Z |
23 | 24 | 2021-11-04T17:41:48Z |
25 | 4 | 2021-11-02T17:40:51Z |
27 | 13 | 2021-11-01T17:19:19Z |
30 | 24 | 2021-10-11T17:41:31Z |
33 | 24 | 2021-10-11T17:41:41Z |
我需要在表中显示 material_referenceid =(例如)13 和 date = WHOLE OLDEST DAY 值的所有行。所以从这个表中我想得到material_id = 2、27的行。当这两个被删除时,将选择10。
非常感谢所有会帮助我的人。非常感谢您的帮助!
解决方案
您只需要选择最旧的一天(在子查询中)并将其连接回表。
要选择最早的一天:
select date(min(material_cas)) from material where material_referenceid = 13
所以,使用它:
select m.material_id, m.material_cas
from (
select date(min(material_cas)) oldest_date from material where material_referenceid = 13
) oldest
join material m on m.material_reference_id=13 and date(m.material_cas)=oldest_date
假设 material_cas 存储在 UTC 中,要根据欧洲/布拉格日期查看,请改为:
select m.material_id, m.material_cas
from (
select date(convert_tz(min(material_cas),'+00:00','Europe/Prague')) oldest_date from material where material_referenceid = 13
) oldest
join material m on m.material_reference_id=13 and date(convert_tz(m.material_cas,'+00:00','Europe/Prague'))=oldest_date
推荐阅读
- firebase - 代理和防火墙后面的 Firebase 移动通知(在公司 LAN 中)
- xamarin - Xamarin InAppBilling 订阅
- c - 使用 lambda 参数的 C 宏的可移植性和安全性
- c++ - MPI通信器的范围
- reactjs - Next.js 部署:Node.js 与静态 HTML 导出?
- javascript - 如何在 React 中为慢速网络添加加载器
- docker - 无法在 Windows 的 Docker 容器中挂载 Windows 网络驱动器
- python - 如何在 Altair 的标准化条形图中放置分数标签?
- ios - 在 iOS 应用程序中使用 ParseSwift .query().find()
- java - Spring Boot 不接收从 Angular 客户端添加的请求标头