日期之间的SQL,但在某个时间切断并继续和某个时间

我有一个MSSQL查询,可以在一段时间内运行订单生产力.基本上它会计算订单从开始日期到完成日期的分钟数.

我正在做的是获取创建订单的日期和时间戳(a)并获得订单完成的日期和时间戳(b)并减去它们然后乘以1440以获得两个日期之间的分钟.

,FLOOR(((CAST(b.[AuditInsertTimestamp2] AS FLOAT)) - (CAST(a.[AuditInsertTimestamp2] AS FLOAT))) * 1440) AS [Minutes]

这完全没问题,但这也算是我们业务关闭的时间.我想做的就是回到我们的业务开放时(上午6:30 – 下午5:00)这些日期之间的时间.日期可以跨越多天或仅一天.有任何想法吗?!?!?!

谢谢!!!!

最佳答案 我会使用您的代码来计算这两个日期之间的所有分钟,但之后我会减去您的业务关闭的分钟数.

为此,请使用this function计算工作天数(从而删除周末)并将输出乘以630(10小时半* 60 =您的业务每天开放的分钟数).

添加它,它将是这样的:

(your result) - (number of work days between the beginning and the end of the request) * 630

但它不会考虑假期.
干杯!

编辑:由于该链接需要注册,这里是代码本身的简短版本;检查原始来源的详细信息,因为我不是它的作者:

SELECT
   (DATEDIFF(dd, @StartDate, @EndDate) + 1)
  -(DATEDIFF(wk, @StartDate, @EndDate) * 2)
  -(CASE WHEN DATENAME(dw, @StartDate) = 'Sunday' THEN 1 ELSE 0 END)
  -(CASE WHEN DATENAME(dw, @EndDate) = 'Saturday' THEN 1 ELSE 0 END)
点赞