如何计算一个月中的星期日并选择第三个?

Cat*_*taa 1 sql-server

我有这张桌子:

 Date                  month                DayOfWeek
2014-01-01              1                        3
2014-01-02              1                        4 
2014-01-03              1                        5
2014-01-04              1                        6
2014-01-05              1                        7
......                .....                   .......
2014-02-01              2                        8
......                .....                    .....
Run Code Online (Sandbox Code Playgroud)

我想获得本月的所有第三个星期日,所以:

Date                 month                      
2014-01-19            1                             
2014-02-16            2                             
Run Code Online (Sandbox Code Playgroud)

我首先开始做:

SELECT CAST(
        CASE
            WHEN [DayOfWeek] = 7
                THEN 1
            ELSE 0
        END AS bit) as Result, [date], [month]
FROM mytable
Run Code Online (Sandbox Code Playgroud)

哪个给:

Result                   date                  month
0                       2014-01-01               1
0                       2014-01-02               1
0                       2014-01-03               1
0                       2014-01-04               1
1                       2014-01-05               1
....
Run Code Online (Sandbox Code Playgroud)

所以这给了我整个星期天,我的最初想法是计算每个月的Result为1并获得第三个日期

如何在sql server中做到这一点?

SS_*_*DBA 5

尝试这个。第三个星期日,只能在15日到21日之间。

SELECT CAST(
        CASE
            WHEN [DayOfWeek] = 7 AND DatePart(day,[Date]) between 15 and 21
                THEN 1
            ELSE 0
        END AS bit) as Result, [date], [month]
FROM mytable
Run Code Online (Sandbox Code Playgroud)