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

SQL Cách xác định xem ngày tháng ngày chứa 29,30 hay 31

Sau khi thêm một tháng, hãy so sánh DAY. Nếu ít hơn vì DATEADD chuyển sang cuối tháng (ví dụ:31 tháng 1 đến 28 tháng 2), thì hãy chuyển sang tháng tiếp theo

DATEADD / DATEDIFF ở đây chuyển sang đầu tháng sau

declare @StartEffectiveDate datetime
set @StartEffectiveDate = '2011-01-20'
SELECT
    CASE
        WHEN DAY(@StartEffectiveDate) <= DAY(DATEADD (MONTH, 1, @StartEffectiveDate)) THEN DATEADD (MONTH, 1, @StartEffectiveDate)
        ELSE DATEADD(day, 1, DATEADD (MONTH, 1, @StartEffectiveDate))
    END

set @StartEffectiveDate = '2011-01-31'
SELECT
    CASE
        WHEN DAY(@StartEffectiveDate) <= DAY(DATEADD (MONTH, 1, @StartEffectiveDate)) THEN DATEADD (MONTH, 1, @StartEffectiveDate)
        ELSE DATEADD(day, 1, DATEADD (MONTH, 1, @StartEffectiveDate))
    END

set @StartEffectiveDate = '2011-02-28'
SELECT
    CASE
        WHEN DAY(@StartEffectiveDate) <= DAY(DATEADD (MONTH, 1, @StartEffectiveDate)) THEN DATEADD (MONTH, 1, @StartEffectiveDate)
        ELSE DATEADD(day, 1, DATEADD (MONTH, 1, @StartEffectiveDate))
    END

Chỉnh sửa:chỉ cần thêm một ngày thay vì một số DATEADD / DATEDIFF ưa thích ...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Đạt đến giới hạn tham số 2100 (SQL Server) khi sử dụng Chứa ()

  2. Cách tìm cài đặt ANSI_NULLS của cơ sở dữ liệu trong SQL Server (T-SQL)

  3. Hợp nhất nhiều cột trong một, duy trì sự giống nhau và thay thế sự khác biệt

  4. Những lý do không có chỉ mục nhóm trong SQL Server 2005

  5. Đặt Identity thành bật hoặc tắt trong máy chủ SQL