Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

SQL Bagaimana menentukan apakah tanggal tanggal bulan mengandung 29,30 atau 31

Setelah menambahkan satu bulan, bandingkan DAY. Jika kurang karena DATEADD pergi ke akhir bulan (misalnya 31 Jan sampai 28 Feb), maka lewati ke bulan berikutnya

DATEADD/DATEDIFF di sini melompat ke awal bulan berikutnya

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

Sunting:hanya perlu menambahkan satu hari ekstra daripada DATEADD/DATEDIFF yang mewah...



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MS SQL ON DELETE CASCADE beberapa kunci asing menunjuk ke tabel yang sama?

  2. Query Profiling 101 — Ya, Itu Benar-Benar Dapat Meningkatkan Kinerja SQL Server Anda

  3. sql server Sisipkan csv secara massal dengan data yang memiliki koma

  4. Dapatkan parameter prosedur tersimpan dengan C# atau SQL?

  5. Buat Akun Email Database di SQL Server (T-SQL)