sql >> Database >  >> RDS >> Sqlserver

Elke maandagdatum en elke vrijdagdatum in het jaar selecteren?

U kunt een geschikte tabel met getallen gebruiken, zoals de tabel master..spt_values ​​als basis voor het genereren van het bereik:

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

Voorbeelduitvoer:

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. Omgaan met NULL's in SQL Server

  2. Recursieve zoekopdracht met CTE - SUM van onderliggende kolommen voor een bepaalde ouder

  3. Pentaho Data Integration (nieuwste versie) - MySQL-stuurprogramma wordt niet gedetecteerd

  4. Hoe ODP.NET 2.111 en ODP.NET 4.112 op dezelfde machine naast elkaar te installeren, terwijl beide naar dezelfde databaseserver verwijzen