【发布时间】:2021-03-19 14:32:35
【问题描述】:
我有一个表格,其中有日期和时间,一列有值。每 10 秒,该表应获得一条新记录。它看起来像:
Date Val1
2020-10-03 10:12:21 30
2020-10-03 10:12:31 30
2020-10-03 10:12:41 30
2020-10-03 10:12:51 30
2020-10-03 10:13:01 30
...
2020-12-07 10:13:24 20
2020-12-07 10:13:34 20
我需要检查日期之间的值,例如: 从 2020 年 10 月 3 日 10:00 到 2020 年 12 月 7 日 12:30, 每 5/15/30 分钟或 1 小时:
Date Val1
2020-10-03 10:00 30
2020-10-03 10:30 30
2020-10-03 11:00 30
2020-10-03 11:30 30
2020-10-03 12:00 30
...
2020-12-07 12:00 20
2020-12-07 12:30 20
我试图在 MySQL 中这样做:
SELECT DATE_FORMAT(Date, "%Y-%m-%d %H:%i") as Date, Val1
FROM table
WHERE Date >= "2020-10-03 10:00" AND Date <= "2020-12-07 12:30"
GROUP BY unix_timestamp(Date)
DIV 1800
但如果我没有每个日期时间,它就不能很好地工作。
如何用 NULL 值填充缺失的日期?我需要每一分钟 (如果间隔以分钟为单位,如果间隔以小时为单位,则每小时一次)。
【问题讨论】:
-
在没有任何聚合函数的情况下,GROUP BY 子句永远不合适。如需进一步帮助,请参阅:Why should I provide an MCRE for what seems to me to be a very simple SQL query?
-
您似乎已删除此问题的先前版本及其所有 cmets,而不是对其进行编辑。 如何用 NULL 值填充缺失的日期? 生成此日期列表并加入您的数据。
-
@Akina 我是 MySQL 新手,我真的不知道如何正确地做到这一点。另外,我更喜欢在不创建新表的情况下找到解决方案。
标签: mysql sql aggregate-functions recursive-query date-arithmetic