所以我想要生成特定时间范围内的所有小时。
因此,考虑到上午 11 点到下午 2:00 的范围,我会得到:
11:00 AM
12:00 PM
1:00 PM
2:00 PM
我试图避免存储商店可能开放的每个特定时间,而只存储范围(我需要将时间与其他时间进行比较)
谢谢
最佳答案
无需循环、递归 CTE 或数字表。
DECLARE
@start TIME(0) = '11:00 AM',
@end TIME(0) = '2:00 PM';
WITH x(n) AS
(
SELECT TOP (DATEDIFF(HOUR, @start, @end) + 1)
rn = ROW_NUMBER() OVER (ORDER BY [object_id])
FROM sys.all_columns ORDER BY [object_id]
)
SELECT t = DATEADD(HOUR, n-1, @start) FROM x ORDER BY t;
关于sql - 获取某个时间范围内的每小时,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/10986344/