【发布时间】:2017-02-28 23:24:00
【问题描述】:
我想知道如何计算 SQL Server 中两个时间戳(例如 2016 年 2 月 24 日 17:30:00 和另一个)之间的“小时数”,但不包括周六和周日的完整 48 小时时段,如果越过。
这与纯粹的工作时间不太一样,但在某种程度上。这样做的原因是冗长且不必要的。
编辑:我也可以说结束日期总是在一周内。所以真的......“开始日期”可以简单地转换为星期一午夜,如果在星期六/星期日......那么也许一个函数包括总周数......
【问题讨论】:
-
datediff(hour, date, date2) - datediff(week, date1, date2) * 48? -
很难使用单个查询,由于第一天或最后一天可能是星期六或星期日。我做了类似的事情,但整天here
-
嗯,我看了你的例子,可能会更深入地挖掘它,但似乎非常冗长。我在想…… datediff(hour,date1,date2) 是一个很好的基线——有没有办法计算两个日期之间的“周日时间”和“周六时间”?我想这是同样的问题。
-
接受stackoverflow.com/questions/252519/… 的答案可能是一个很好的起点 - 需要调整几个小时而不是几天,以及日期范围在周末开始或结束的情况
-
如果您的开始和结束日期可以是星期六或星期日,那么您需要生成开始日期和结束日期之间的所有日期,然后不包括您的 datepart(weekday, date) 所在的日期(1, 7)。
标签: sql-server datetime datediff business-logic