【发布时间】:2020-05-21 21:33:38
【问题描述】:
我正在尝试编写一个查询,该查询将为我提供两个特定时间在两个特定日期之间完成的程序数量,但仅限于工作日。我的脚本适用于日期和时间,但我不知道如何获取它,以便它只包括工作日。我只想要周一到周五的结果,不包括周六和周日的结果。
我的查询:
SELECT MONTH(r.LastModifiedDate) AS MONTHpreCOVID, PlacerFld2 AS MODALITY, COUNT(*) AS CountOfReportsDayTimePreCOVID
FROM [order] o
LEFT JOIN report r
ON o.reportID = r.reportID
WHERE r.LastModifiedDate >= '2019-07-01' AND r.lastmodifieddate <= '2020-06-01'
AND CAST(r.lastmodifieddate as TIME) >= '08:00:00' AND CAST(r.lastmodifieddate as TIME) <='16:59:59'
AND reportstatusID = '7'
AND r.creatorAcctID = '139'
GROUP BY MONTH(r.LastModifiedDate), PlacerFld2
ORDER BY MONTH(r.LastModifiedDate) ASC
我尝试添加类似 WEEKDAY(r.lastmodifieddate) IN ('0','1','2','3','4') 的内容,但这不起作用。
【问题讨论】:
-
请提供样本数据和期望的结果。 db/sql fiddle 也会有所帮助。
-
我会努力解决这个问题,但我不知道我能更清楚地表明使用 2019-07-01 和 2020-06-01 之间的日期以及 08:00 之间的时间: 00 和 16:59:59 我想从结果中排除周六和周日。
-
DATEPART(WEEKDAY, r.lastmodifieddate) NOT IN (1,7)?
标签: sql datetime sql-server-2016