DATEDIFF只包括工作日?

时间:2014-07-14 13:23:08

标签: sql sql-server ssms

我目前有这个查询,我希望DATEDIFF只包括“工作日”所以它只包括星期一到星期五(操作时间无关紧要)

Select 
a.SiteID,
DATEDIFF(d,a.Mino,a.Maxo)
FROM
(Select 
sn.SiteID,
MAX(sn.CreationDate) Maxo,
MIN(sn.CreationDate) Mino
From SiteNotifications sn
Group By sn.SiteID) a

到目前为止,它只是做了所有的日子 - 这是可以预料的,但无论如何我只能在星期一到星期五捕获?

这里进一步澄清BTW是查询输出的一个示例(请注意,每个SiteID也有自己的最小和最大时间 - 它们不是所有相同的日期范围)。

SiteID | Days
-------------
123456 | 0
-------------
789012 | 0
------------
654321 | 31

所以0是最小和最大日期是相同的(或者我应该说的相同日期),所以没关系。 31天 - 因为我知道大约一个月和一个月有大约8个工作日 - 应该真的是'23'

1 个答案:

答案 0 :(得分:0)

试试这个

Select 
a.SiteID,
DATEDIFF(d,a.Mino,a.Maxo)-2*Datediff(wk,a.mino,a.maxo)
FROM
(Select 
sn.SiteID,
MAX(sn.CreationDate) Maxo,
MIN(sn.CreationDate) Mino
From SiteNotifications sn
Group By sn.SiteID) a

这只是为了您的基本想法,您必须编写案例陈述,以确定开始和结束日期不会在周末出现。