首页 > 解决方案 > 从早上 7:00 开始按 24 小时时段分组

问题描述

我有一些高频数据需要从早上 7:00 开始按 24 小时分组。我怎样才能做到这一点?

例如,每 5 分钟有一个时间戳,我想按天对其进行分组,但每天从早上 7:00 开始。

我该怎么做呢?

2016 年的 SQL 服务器。

标签: sql-serverdatetimegrouping

解决方案


我假设您的时间可能是 UTC。我会考虑将时间转换为您需要的时区。然后它为您提供了更多关于如何处理数据的选项,您还可以为不同区域的人自定义报告。有关时区的一些信息,我发现了这个 stackoverflow 帖子。

使用 sql 查询将日期时间值从一个时区转换为 UTC 时区

在 group by 子句中这样的东西应该可以工作。下面的代码表示如果小时数低于 8 点,那么它仍然是昨天,否则它真的是今天。您需要将 getdate() 替换为正确的列。如果我认为时间是 UTC/GMT 是正确的,我建议您将其转换为您想要的时区。

case when datepart(hh, getdate())<8 then
cast((DATEADD(day, -1, getdate())) as date)
else
    cast(getdate() as date)
end

推荐阅读