我有一个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)