Sqlserver
 sql >> Baza danych >  >> RDS >> Sqlserver

Jak wybrać datę w każdy poniedziałek i w każdy piątek w roku?

Możesz użyć odpowiedniej tabeli z liczbami, na przykład tabeli master..spt_values ​​jako podstawy do generowania zakresu:

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

Przykładowe wyjście:

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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. dołącz do kolumny danych rozdzielanych przecinkami

  2. Jak włączyć SQL Server Agent XP za pomocą T-SQL?

  3. Wzorzec regex wewnątrz funkcji SQL Replace?

  4. Jeśli nie określono opcji „Kolejność według”, jaką kolejność wybiera zapytanie dla zestawu rekordów?

  5. Pobieranie maksymalnej wartości z wierszy i dołączanie do innej tabeli