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

Generuj daty między zakresami dat

Łatwy w SQL 2005+; łatwiej, jeśli masz tablicę liczbową lub zliczającą. Sfałszowałem to poniżej:

DECLARE @StartDate DATE = '20110901'
  , @EndDate DATE = '20111001'

SELECT  DATEADD(DAY, nbr - 1, @StartDate)
FROM    ( SELECT    ROW_NUMBER() OVER ( ORDER BY c.object_id ) AS Nbr
          FROM      sys.columns c
        ) nbrs
WHERE   nbr - 1 <= DATEDIFF(DAY, @StartDate, @EndDate)

Jeśli masz tabelę podsumowującą, zastąp podzapytanie tabelą. Brak rekurencji.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Rozwiązania dla INSERT OR UPDATE w SQL Server

  2. Jak dodać kodowanie xml <?xml version=1.0 encoding=UTF-8?> do danych wyjściowych xml w SQL Server?

  3. Jak poprawić wydajność filtrowania daty i godziny w programie SQL Server?

  4. Porównanie ciągów SQL uwzględniających wielkość liter

  5. Jak utworzyć tabelę z ograniczeniem klucza obcego w SQL Server — samouczek SQL Server / TSQL, część 66