1

这是一个问题。我需要找到两个日期之间的工作日(没有周末)。我目前发现并能够成功使用这种方法:

SELECT 5 * (DATEDIFF(DateClosed, DateOpened) DIV 7) + MID('0123455501234445012333450122234501101234000123450', 
  7 * WEEKDAY(DateOpened) + WEEKDAY(DateClosed) + 1, 1) AS TotalResolutionTimeBusinessDays 
FROM table1

这是一个基于矩阵的复杂计算:

 | M T W T F S S
-|--------------
M| 0 1 2 3 4 5 5
T| 5 0 1 2 3 4 4
W| 4 5 0 1 2 3 3
T| 3 4 5 0 1 2 2
F| 2 3 4 5 0 1 1
S| 0 1 2 3 4 0 0
S| 0 1 2 3 4 5 0

在矩阵中,任何给定的 x 和 y 值对(WEEKDAY(@S) 和 WEEKDAY(@E) 的交集产生两个值之间的工作日差异。表中的 49 个值连接成以下字符串:0123455501234445012333450122234501101234000123450.

这对我来说很好,但现在我需要以另一种格式呈现日期之间的差异。例如:假设我们有两个日期:StartDate = '2013-06-28 01:27:35' 和 EndDate = '2013-07-08 16:47:21'。如果我们使用上述方法,我们会得到 7 个工作日,这是正确的。但我需要计算日期(包括小时和分钟)之间的所有差异,所以它看起来像

SELECT TIME_TO_SEC(TIMEDIFF('2013-07-08 16:47:21','2013-06-28 01:27:35')) / 3600 / 24 

没有周末的应该是 7.64 天。

有什么建议如何根据该格式编写计算吗?任何帮助将非常感激。

4

0 回答 0