1

end_dtが月の 15 日未満の場合、前月の日付を考慮する必要がある結果が必要です

例 -よりend_dt08-May-201130-APR-2011

次のコードを使用しましたが、それを行うより良い方法はありますか

select
    id, 
    start_dt, 
    end_dt,
    End_mth = 
        case
            when end_dt<=DATEADD(YY,(DATEPART(yy,end_dt))-1900,0) + DATEADD(MM,(DATEPART(MM,end_dt))-1,0)+ 15 then month(DATEADD (mm,-1,end_dt))
            else month(isnull(end_dt,'31-Mar-2012'))
        end
from 
    sd_table
4

1 に答える 1

1

end_dt が月の 15 日未満の場合は、前月の日付を考慮する必要があります。

以下はこれに対処します。

SELECT
    id, 
    start_dt, 
    end_dt,
    CASE
        WHEN DATEPART(dd, end_dt) < 15 THEN DATEADD(dd, -1 * DATEPART(dd, end_dt), end_dt)
        ELSE end_dt
    END as End_mth
from 
    sd_table
于 2012-09-22T08:47:40.003 に答える