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

Najłatwiejszy sposób na wypełnienie tabeli tymczasowej datami między 2 parametrami daty włącznie

Działa to nawet wtedy, gdy @StartDate nie jest pierwszym dniem miesiąca. Zakładam, że jeśli nie jest to początek miesiąca, to chcesz zacząć od pierwszego dnia następnego miesiąca. W przeciwnym razie usuń +1.:

;WITH cte AS (
SELECT CASE WHEN DATEPART(Day,@StartDate) = 1 THEN @StartDate 
            ELSE DATEADD(Month,DATEDIFF(Month,0,@StartDate)+1,0) END AS myDate
UNION ALL
SELECT DATEADD(Month,1,myDate)
FROM cte
WHERE DATEADD(Month,1,myDate) <=  @EndDate
)
SELECT myDate
FROM cte
OPTION (MAXRECURSION 0)


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. co oznacza Enlist=false w ciągu połączenia dla serwera sql?

  2. Czy mogę przekazać argumenty do zewnętrznego wyzwalacza (CLR) SQL Server?

  3. Wyjątek izolowanego magazynu:nie można określić tożsamości domeny

  4. Nie można obciąć tabeli, ponieważ odwołuje się do niej ograniczenie klucza obcego — SQL Server/TSQL Tutorial, część 70

  5. Warunkowe sprawdzenie klauzuli „Gdzie”