:
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
source
share