我有一段时间,想要创建第二列,以显示它们落入24小时时钟的5分钟间隔。例如
15:19:52 becomes 15:15:00
15:20:11 becomes 15:20:00
答案 0 :(得分:5)
您可以执行以下操作。它建立时间
SELECT TIMEFROMPARTS(
DATEPART(HOUR, yourTimeField),
DATEPART(MINUTE, yourTimeField) / 5 * 5, 0,
0,
0)
FROM yourTable
答案 1 :(得分:1)
我发现有一个帖子可以帮助你开始使用它。
T-SQL: Round to nearest 15 minute interval
但是,此处的所有示例似乎都只是向上舍入,因此您需要从结果中减去5才能得到您正在寻找的内容。
答案 2 :(得分:0)
另一种简化的解决方案是创建时间线并找到您的确切位置:
DECLARE @t TABLE (b TIME)
INSERT INTO @t
VALUES ( '14:16') ,( '15:19:52') ,('15:20:11')
;
WITH cte AS (
SELECT CAST ('00:00'AS TIME) AS a
UNION ALL
SELECT DATEADD(MINUTE, 5, a) from cte
WHERE cte.a < CAST ('23:54:00' AS TIME)
)
SELECT * FROM @t CROSS APPLY(SELECT TOP 1 a FROM cte WHERE a<=b ORDER BY
a DESC) k option (maxrecursion 0)
b a
14:16:00.0000000 14:15:00.0000000
15:19:52.0000000 15:15:00.0000000
15:20:11.0000000 15:20:00.0000000