【问题标题】:DATEDIFF to only include working days? [duplicate]DATEDIFF 仅包括工作日? [复制]
【发布时间】:2014-07-14 13:23:08
【问题描述】:

我目前有这个查询,我想让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

到目前为止,它只是在做所有的日子 - 这是意料之中的,但无论如何我只能在周一 - 周五捕捉到吗?

顺便说一句,为了进一步说明,这里是查询输出的示例(请注意,每个 SiteID 也有自己的最小和最大时间 - 它们并非都是相同的日期范围)。

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

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

【问题讨论】:

  • 这非常有用,但我不确定如何将链接中的信息与我的查询结合/使用。因为有各种各样的日期而不是一个固定的日期。

标签: sql sql-server ssms


【解决方案1】:

试试这个

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

这只是你的基本想法,你必须编写案例声明以查看开始和结束日期不属于周末。

【讨论】:

  • 我能知道为什么这不起作用..
  • 实际上这对我来说很好 - 谢谢!虽然我也不是特别准确。这对我的需要很好。例如,16 天 - 大约 2 周。其中包括大约 4 天的周末。现在是'12'天。我目前不包括诸如开始日期是周末还是结束日期是周末等内容。
  • 顺便说一句,我没有投反对票>.>
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2012-08-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多