我想选择过去 15 分钟内的数据,例如:
在 12.02 我想要从 11:45 到 12:00 的行
在 12.09 我仍然想要从 11:45 到 12:00 的行
在 12.18 我想要从 12:00 到 12:15 的行
数据以datetime2格式存储,我使用的是2019标准版。感谢任何帮助让我开始。规范稍后可能会更改(例如,10 分钟而不是 15 分钟),但我希望能够自己解决这个问题。
谢谢
样本数据:
DECLARE @T table
(
t time(0) NOT NULL
);
INSERT @T
(t)
VALUES
(CONVERT(time(0), '12:02', 8)),
(CONVERT(time(0), '12:09', 8)),
(CONVERT(time(0), '12:18', 8));
Run Code Online (Sandbox Code Playgroud)
解决方案:
-- SQL Server 2022, Azure SQL Database, Azure Managed Instance, Azure SQL Edge
SELECT
period_end = DATE_BUCKET(MINUTE, 15, T.t)
FROM @T AS T;
-- Others
SELECT
period_end =
DATEADD
(
MINUTE,
15 *
(
DATEDIFF
(
MINUTE,
CONVERT(time(0), '00:00', 8),
T.t
)
/ 15 -- integer division
),
CONVERT(time(0), '00:00', 8)
)
FROM @T AS T;
Run Code Online (Sandbox Code Playgroud)
输出:
期末 |
---|
12:00:00 |
12:00:00 |
12:15:00 |