sql - 如何选择一年中的每个星期一日期和每个星期五日期

标签 sql sql-server-2012

基本上我希望能够为一年中的每个星期选择星期一和星期五。

例如,本周即将到来的我想要 9/29/2014 和 10/3/2014,但我想要一年中的每个星期。

最佳答案

您可以使用带有数字的合适表,例如 master..spt_values 表作为范围生成的基础:

;WITH dates AS (
    SELECT DATEADD(DAY,number,CAST('2014-01-01' AS DATE)) d
    FROM master..spt_values WHERE TYPE = 'p'
    AND number < 366
    )

SELECT 
    Week = DATEPART(WEEK, d), 
    DayOfWeek = DATENAME(dw, d), 
    Date = d
FROM dates
WHERE DATENAME(dw, d) IN ('Monday', 'Friday')
-- or use datepart instead as datename might be specific to language
-- WHERE DATEPART(dw, d) IN (2,6)

示例输出:
Week        DayOfWeek                      Date
----------- ------------------------------ ----------
1           Friday                         2014-01-03
2           Monday                         2014-01-06
2           Friday                         2014-01-10
3           Monday                         2014-01-13
3           Friday                         2014-01-17
4           Monday                         2014-01-20
4           Friday                         2014-01-24
5           Monday                         2014-01-27
5           Friday                         2014-01-31

关于sql - 如何选择一年中的每个星期一日期和每个星期五日期,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26088814/

相关文章:

sql - 从数字序列动态创建范围

sql - 图或关系数据库更适合这种树结构?

sql - 在不使用 group by 子句的情况下按列对结果进行分组

sql - 如何将动态列值拆分为动态多列值

sql-server-2012 - 如何在 SQL Server 中跟踪删除数据的登录详细信息

mysql - phpMyAdmin 中的正则表达式搜索

php查询对数据库中的结果进行排序

sql - SQL Server 中 OVER 和 PARTITION BY 生成的值的状态

sql - 如何在 SELECT/INTO 语句中使用 OUTPUT 子句

sql - SQL Server 2012 中的编号岛