Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Най-лесният начин за попълване на временна таблица с дати между и включително 2 параметъра за дата

Това работи дори ако @StartDate не е първото от месеца. Предполагам, че ако не е началото на месеца, искате да започнете с първо число на следващия месец. В противен случай премахнете +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. SQL Server преобразува низ в дата и час

  2. Изследване на GUI на SQL Server 2016 Query Store

  3. Как да върнете *всичко* от съхранена процедура с помощта на JDBC

  4. Преобразувайте данни от ред в колона в SQL Server

  5. преглед на променените стойности след израз за актуализиране