【发布时间】:2018-03-26 18:05:26
【问题描述】:
我还在学习 SQL,所以请记住这一点。我有一个查询返回特定范围的平均天数,尽管我的范围不考虑周末和节假日。假期可能有点棘手,但我如何将周末排除在我的范围之外?
例如,我有一个 02-01-18 到 02-15-18 的范围,其中 datediff 是 14 天,但是我如何让 SQL 识别该范围内的哪些天是周末以及是否要将它们排除在外我的日期差异?
我的查询是
SELECT
AVG(1.00 * DATEDIFF(DAY, xx, yy)) AS DayDiff
FROM
datebase1.dbo.table1
WHERE
MONTH(datecompleted) = MONTH(DATEADD(month, -1, current_timestamp))
AND YEAR(datecompleted) = YEAR(DATEADD(month, -1, current_timestamp))
AND ApprovalRequiredFrom = 'pp'
我确实有一个可以提供的日历,它告诉我日期和当天的名称,但我想避免这样做。我希望能够将周末排除在我的范围之外,以获得更准确的结果。
谢谢
【问题讨论】:
-
之前有人问过这个问题:stackoverflow.com/questions/7388420/…
-
我已经阅读了这两个问题,我需要一些关于 WHERE ((DATEPART(dw, xx, yy) + @@DATEFIRST) % 7) NOT IN (0, 1) 正确语法的帮助)?
-
我使用 DimDate 维度执行此操作,并将其用于您的日期工作。如果您有每日粒度,那么它将是 (Select Count(*) from DimDate where DateVal between xx and yy and DayOfWeek not in (1,7)
-
不确定如何让它正常工作
标签: sql-server ssms datediff