【发布时间】:2021-02-10 09:56:35
【问题描述】:
我有一张表格,其中包含从日期 a 到日期 b 的时间间隔。间隔为 30 分钟,如下所示:
2021-02-22 00:00:00.000
2021-02-22 00:30:00.000
2021-02-22 01:00:00.000
2021-02-22 01:30:00.000
2021-02-22 02:00:00.000
2021-02-22 02:30:00.000
2021-02-22 03:00:00.000
[...]
2021-03-21 23:30:00.000
我必须每 30 分钟检查一次从我的MIN(date) = 2021-02-22 00:00:00.000 到我的MAX(date) = 2021-03-21 23:30:00.000 是否有记录。
每个日历周的记录的COUNT() 是336。每天 30 分钟 * 每周 7 天 = (24 * 2) * 7)。
我试图检查每个日历周是否有 336 条记录,但如果一条记录丢失并且一条记录存在两次,则计数为 336,但结果是错误的。
SELECT *
FROM (
SELECT a,
b,
DATEPART(iso_week, interval_datetime) AS cw,
COUNT(id) AS counts
FROM data_table
GROUP BY DATEPART(iso_week, interval_datetime),
a,
b
) AS xyz
WHERE counts <> 336;
是否有其他方法可以检查是否有双重记录并检查是否使用了每 30 分钟的记录?也许没有“日期”表。
谢谢!
【问题讨论】:
-
每 30 分钟是指记录之间不超过 30 分钟,还是从午夜 00:00 开始每 30 分钟有一个记录? IE。 00:15 和 00:50 和 01:25 可以吗?
-
从 00:00 开始,然后每 30 分钟一次,直到 00:00 再一次,依此类推。干杯!
-
这是我的第一选择还是第二选择?
-
记录之间不超过 30 分钟,从午夜 00:00 开始每 30 分钟有一个记录
标签: sql-server date intervals