Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Cách dễ nhất để điền vào bảng tạm thời với các ngày giữa và bao gồm cả 2 tham số ngày

Điều này hoạt động ngay cả khi @StartDate không phải là ngày đầu tiên của tháng. Tôi giả định rằng nếu không phải là đầu tháng, bạn muốn bắt đầu với ngày đầu tiên của tháng tiếp theo. Nếu không, hãy xóa +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. =* Nghĩa là gì?

  2. SQL Server 2016:Khôi phục cơ sở dữ liệu

  3. SQL Server LIKE chứa các ký tự trong ngoặc

  4. Thay đổi Thu thập dữ liệu hoặc Theo dõi Thay đổi - Giống như Bảng Đường mòn Kiểm toán Truyền thống?

  5. varbinary thành chuỗi trên SQL Server