sql >> Databasteknik >  >> RDS >> Sqlserver

Hur man väljer varje måndagsdatum och varje fredagsdatum under året

Du kan använda en lämplig tabell med siffror, som master..spt_values-tabellen som grund för intervallgenereringen:

;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)

Exempelutdata:

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


  1. Entity Framework 6-transaktionsåterställning

  2. Hur man dold kolumn i Winform listbox?

  3. Sqlldr- Ingen terminator hittades efter avslutat och inneslutet fält

  4. Komplex SQL-fråga med flera tabeller och relationer