我正在运行SQL Server 2014,并且我的以下查询运行良好。但是,我需要对其进行修改,以使其在查询中指定的时间段内仅输出StayDatesSaturdaysSundays

我搜索了一些解决方案,但是我找到了一些难以理解的复杂解决方案。有人提到使用INTERVAL DAYOFWEEK代码,但没有明确的解释让我测试代码。

这是我的查询当前的状态:

SELECT ResID, MIN(STAYDATE) AS 'Start Date',MAX(STAYDATE) AS 'End Date'
FROM RStayDate
WHERE StayDate BETWEEN '2014-10-01' AND '2014-12-31'
GROUP BY ResID


我不需要提供与查询中提到的特定时间段相关的所有记录,而是需要修改代码,以便仅将与周末(周六和周日)相关的记录制成表格。

最佳答案

具有DATEPART功能:

SELECT ResID, MIN(STAYDATE) AS 'Start Date',MAX(STAYDATE) AS 'End Date'
FROM RStayDate
WHERE StayDate BETWEEN '2014-10-01' AND '2014-12-31' AND DATEPART(dw, STAYDATE) IN(7, 1)
GROUP BY ResID


@Richard提到它取决于设置,因此您应在此处进行检查:

https://msdn.microsoft.com/en-us/library/ms174420.aspx


当datepart是星期(wk,ww)或星期几(dw)时,返回值
取决于使用SET DATEFIRST设置的值。

10-08 13:26