這裏有兩個日期時間之間的每個下午6點的計數:
DECLARE @StartDate datetime
DECLARE @EndDate datetime
set @StartDate = '2017-04-17 19:00:00'
set @EndDate = '2017-04-19 17:00:00'
;WITH cte1 (S) AS (
SELECT 1 FROM (VALUES (1), (1), (1), (1), (1), (1), (1), (1), (1), (1)) n (S)
),
cte2 (S) AS (SELECT 1 FROM cte1 AS cte1 CROSS JOIN cte1 AS cte2),
cte3 (S) AS (SELECT 1 FROM cte1 AS cte1 CROSS JOIN cte2 AS cte2)
select count(datepart(hour,result)) as count from
(SELECT TOP (DATEDIFF(hour, @StartDate, @EndDate) + 1)
result = DATEADD(hour, ROW_NUMBER() OVER(ORDER BY S) - 1, @StartDate)
FROM cte3) as res where datepart(hour,result) = 18
這裏是下午6點的兩個日期時間之間的詳細視圖:
DECLARE @StartDate datetime
DECLARE @EndDate datetime
set @StartDate = '2017-04-17 19:00:00'
set @EndDate = '2017-04-19 17:00:00'
;WITH cte1 (S) AS (
SELECT 1 FROM (VALUES (1), (1), (1), (1), (1), (1), (1), (1), (1), (1)) n (S)
),
cte2 (S) AS (SELECT 1 FROM cte1 AS cte1 CROSS JOIN cte1 AS cte2),
cte3 (S) AS (SELECT 1 FROM cte1 AS cte1 CROSS JOIN cte2 AS cte2)
select result,datepart(hour,result) from
(SELECT TOP (DATEDIFF(hour, @StartDate, @EndDate) + 1)
result = DATEADD(hour, ROW_NUMBER() OVER(ORDER BY S) - 1, @StartDate)
FROM cte3) as res where datepart(hour,result) = 18
怎麼樣,如果你有很長的日期範圍像一個月年? –