【发布时间】:2015-01-14 14:44:49
【问题描述】:
在一个视图中,这两个日期来自一个表:
2014-12-17 14:01:03.523 - 2014-12-20 09:59:28.783
假设我可以计算一天中从早上 8 点到下午 5 点的小时数,我需要知道日期差异(以小时为单位)。
当然不能包括周六和周日。
我尝试在选择中使用此代码,但我只得到了几天的差异,不包括周六和周日。
(DATEDIFF(HOUR, convert(datetime,t.EXT_DATAINS-2), convert(datetime,b.EXT_DATAINS-2)) + 1)
-(DATEDIFF(wk, convert(datetime,t.EXT_DATAINS-2), convert(datetime,b.EXT_DATAINS-2)) * 2)
-(CASE WHEN DATENAME(dw, convert(datetime,t.EXT_DATAINS-2)) = 'Sunday' THEN 1 ELSE 0 END)
-(CASE WHEN DATENAME(dw, convert(datetime,b.EXT_DATAINS-2)) = 'Saturday' THEN 1 ELSE 0 END) differenza
例子:
2014-12-17 : 3hrs
2014-12-18 : 8hrs
2014-12-19 : 8hrs
2014-12-20 : 2hrs
Tot : 21hrs
【问题讨论】:
-
没有标准函数可以帮助您做到这一点。除了定义您的“营业时间”(午餐时间计算吗?)和假期安排之外,您还必须定义当范围在营业时间之外开始或结束时会发生什么。例如:如果从下午 3 点到下午 6 点,那是多少小时?凌晨 3 点到晚上 10 点怎么样?
-
这两个日期之间的差异导致您想要什么?
-
你能告诉我们你尝试了什么,例如用于从开始日期到结束日期运行的 CTE 或数字表,
CASE用于确定每个日期包含的小时数,SUM用于最终结果? -
这两个日期 2014-12-17 14:01:03.523 - 2014-12-20 09:59:28.783 会有什么区别
标签: sql-server tsql time datediff