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

Cách tạo bảng lịch có ngày tháng bắt đầu và ngày tháng kết thúc

Nếu bạn không có bảng lịch, bạn có thể sử dụng bảng kiểm đếm đặc biệt

Ví dụ

Declare @Date1 date = '2018-01-01'
Declare @Date2 date = GetDate()

Select [Month] = D
      ,[Eomonth] = case when EOMONTH(D)>@Date2 then convert(date,GetDate()) else EOMONTH(D) end
 From  (
        Select Top (DateDiff(Month,@Date1,@Date2)+1) 
               D=DateAdd(Month,-1+Row_Number() Over (Order By (Select Null)),@Date1) 
         From  master..spt_values n1
       ) A

Trả lại

Month       Eomonth
2018-01-01  2018-01-31
2018-02-01  2018-02-28
2018-03-01  2018-03-31
2018-04-01  2018-04-30
2018-05-01  2018-05-31
2018-06-01  2018-06-30
2018-07-01  2018-07-31
2018-08-01  2018-08-31
2018-09-01  2018-09-30
2018-10-01  2018-10-31
2018-11-01  2018-11-30
2018-12-01  2018-12-31
2019-01-01  2019-01-31
2019-02-01  2019-02-13   <-- Today's date


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Buộc tham gia một phần thứ tự trong SQL Server

  2. Khi tăng kích thước của cột VARCHAR trên một bảng lớn có thể có vấn đề gì không?

  3. Trung bình của các hàng được nhóm trong Sql Server

  4. Lỗi SQL động khi chuyển đổi nvarchar thành int

  5. Bản ghi gần đây nhất trong một lần tham gia bên trái