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

日付範囲内で毎月の支払い日を生成する SQL クエリ

    以下のようにできます:

    DECLARE @SelectedDate DATETIME = '2016.01.30'
    SELECT
         DATEADD(DAY, -1 - (DAY(EOMONTH(@SelectedDate)) - DAY(@SelectedDate)),  DATEADD(MONTH, v.m, DATEFROMPARTS(YEAR(@SelectedDate), 1, 1)))   
    FROM
        (VALUES (1), (2), (3), (4), (5), (6), (7), (8), (9), (10), (11), (12)) AS v(m)
    

    月末まであと何日。見つかった日数は、他の月から削除されます。

    DAY(EOMONTH(@SelectedDate) (31) - DAY(@SelectedDate) (30) =left days (1)

    結果:

    2016-01-30
    2016-02-28
    2016-03-30
    2016-04-29
    2016-05-30
    2016-06-29
    2016-07-30
    2016-08-30
    2016-09-29
    2016-10-30
    2016-11-29
    2016-12-30
    


    1. Oracle PL / SQL:トリガー列を動的にループオーバー

    2. 現在の日付から最後の 12 か月と、取得した先月の 1 日までの余分な日数を取得するにはどうすればよいですか

    3. 連続したPreparedStatementのグッドプラクティス

    4. 致命的なエラー:キャッチされないエラー:未定義の関数mysql_pconnect()の呼び出し