sql >> データベース >  >> RDS >> Sqlserver

SQL日付月の日付に29、30、または31が含まれているかどうかを判別する方法

    月を追加した後、DAYを比較します。 DATEADDが代わりに月末(1月31日から2月28日など)に移動するために少ない場合は、翌月にスキップします

    ここでのDATEADD/DATEDIFFは、翌月の初めにスキップします

    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
    

    編集:いくつかの派手なDATEADD / DATEDIFFではなく、1日を追加するだけで済みます...



    1. INSERT ステートメントのパラメーターとしての列名

    2. SQLServer2017でリレーションシップを作成する

    3. EPPLUS でリストから Excel にエクスポート

    4. EntityFrameworkを使用したAtomicIncrement