sql-server - 如何修改 SQL 查询以仅输出特定时间段内周六和周日的数据?

标签 sql-server date

我正在运行 SQL Server 2014 并且以下查询运行良好。但是,我需要修改它,以便它仅输出查询中指定时间段内的 StayDates,即 SaturdaysSundays

我搜索了一些解决方案,但发现了一些难以理解的复杂解决方案。有些人提到使用 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

When datepart is week (wk, ww) or weekday (dw), the return value depends on the value that is set by using SET DATEFIRST.

关于sql-server - 如何修改 SQL 查询以仅输出特定时间段内周六和周日的数据?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/30256699/

相关文章:

sql - 查询需要长时间的调整建议

SQL - AVG 和分组依据

javascript - 如何在 Javascript 中获取每个月的指定日期?

php - 将时间/日期附加和应用到用户提交的数据并转换为指定时区的替代或更好的方法

linux - 定期更新虚拟机时间

django - 基于 django 中的比较进行过滤

sql - 我可以避免在这种递归查找场景中使用游标吗?

sql-server - 将 SAVE TRANSACTION 与链接服务器一起使用

sql - 计算考勤时差

sql-server - 外来字符丢失变音符号