如果已经问过这个问题,我想不出一个好方法来表达这个问题以正确搜索。
我正在 SQL 2008 R2 中寻找一种方法来计算两个日期时间值之间 6pm 发生的次数。
例如,在'2017-04-17 19:00:00'和'2017-04-19 17:00:00' 之间,即使时间跨越 3 天,下午 6 点也只会发生一次。
在“2017-04-17 18:00:00”和“2017-04-19 18:00:00”之间,它发生了 3 次,同时也跨越了 3 天。
这是我想要的插图的一个非常愚蠢的表达。
timecount(hh, 6, min(datefield), max(datefield))
谢谢
一个简单的计数查询:
DECLARE @StartDate datetime = '2017-04-17 18:00:00'
DECLARE @EndDate datetime = '2017-04-19 18:00:00'
SELECT
CASE
WHEN CAST(@StartDate AS time) <= '18:00' AND CAST(@EndDate AS time) >= '18:00'
THEN datediff(day, @StartDate, @EndDate) + 1
WHEN CAST(@StartDate AS time) <= '18:00' AND CAST(@EndDate AS time) < '18:00'
THEN datediff(day, @StartDate, @EndDate)
WHEN CAST(@StartDate AS time) > '18:00' AND CAST(@EndDate AS time) >= '18:00'
THEN datediff(day, @StartDate, @EndDate)
ELSE datediff(day, @StartDate, @EndDate) - 1
END AS TotalCount
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句