月31日1日後の日は何ですか.月31日までの1ヶ月ですか?いろいろなRDBSでチェックしました.


31/1に、このようなメッセージを読むとき、あなたはすぐに何の日か考えることができますか?
「登録日の1ヶ月後に期限が切れる」と述べた.
また、次のメッセージは31/3ですか?
「1ヶ月分の通知がされます.」
私はこれを調べました、しかし、私は法的規定または国際規則を見つけることができませんでした.
そこで、様々なRDBSで研究することにしました.
試してみました.
  • MySQL
  • PostgreSQL
  • SQLサーバ
  • のオラクル
  • すべてのRDBS結果は同じでした.

    結果


    内容
    結果
    28/1後1ヶ月
    28/2
    29/1後1ヶ月
    28/2
    30分の1の後の1ヵ月
    28/2
    31/1後1ヶ月
    28/2
    28/3以前の1ヶ月
    28/2
    29/3前1ヶ月
    28/2
    30/3前1ヶ月
    28/2
    31/3以前の1ヶ月
    28/2
    28/1(閏年)後1ヶ月
    28/2
    29/1(閏年)後1ヶ月
    29/2
    30/1(閏年)後1ヶ月
    29/2
    31/1(閏年)後1ヶ月
    29/2
    28/3(閏年)前1ヶ月
    28/2
    29/3(閏年)前1ヶ月
    29/2
    30/3(閏年)前1ヶ月
    29/2
    31/3(閏年)前1ヶ月
    29/2

    SQL 声明


    MySQL


    バージョン5.7
    SELECT
        DATE_ADD(CAST('2018/01/28' AS DATE), INTERVAL 1 MONTH) AS "1 month after 28/1"
       ,DATE_ADD(CAST('2018/01/29' AS DATE), INTERVAL 1 MONTH) AS "1 month after 29/1"
       ,DATE_ADD(CAST('2018/01/30' AS DATE), INTERVAL 1 MONTH) AS "1 month after 30/1"
       ,DATE_ADD(CAST('2018/01/31' AS DATE), INTERVAL 1 MONTH) AS "1 month after 31/1"
    
       ,DATE_ADD(CAST('2018/03/28' AS DATE), INTERVAL -1 MONTH) AS "1 month before 28/3"
       ,DATE_ADD(CAST('2018/03/29' AS DATE), INTERVAL -1 MONTH) AS "1 month before 29/3"
       ,DATE_ADD(CAST('2018/03/30' AS DATE), INTERVAL -1 MONTH) AS "1 month before 30/3"
       ,DATE_ADD(CAST('2018/03/31' AS DATE), INTERVAL -1 MONTH) AS "1 month before 31/3"
    
       ,DATE_ADD(CAST('2020/01/28' AS DATE), INTERVAL 1 MONTH) AS "1 month after 28/1(leap year)"
       ,DATE_ADD(CAST('2020/01/29' AS DATE), INTERVAL 1 MONTH) AS "1 month after 29/1(leap year)"
       ,DATE_ADD(CAST('2020/01/30' AS DATE), INTERVAL 1 MONTH) AS "1 month after 30/1(leap year)"
       ,DATE_ADD(CAST('2020/01/31' AS DATE), INTERVAL 1 MONTH) AS "1 month after 31/1(leap year)"
    
       ,DATE_ADD(CAST('2020/03/28' AS DATE), INTERVAL -1 MONTH) AS "1 month before 28/3(leap year)"
       ,DATE_ADD(CAST('2020/03/29' AS DATE), INTERVAL -1 MONTH) AS "1 month before 29/3(leap year)"
       ,DATE_ADD(CAST('2020/03/30' AS DATE), INTERVAL -1 MONTH) AS "1 month before 30/3(leap year)"
       ,DATE_ADD(CAST('2020/03/31' AS DATE), INTERVAL -1 MONTH) AS "1 month before 31/3(leap year)"
    

    PostgreSQL


    Ver : 9.6
    SELECT
        CAST('2018/01/28' AS DATE) + interval '1 months' AS "1 month after 28/1"
       ,CAST('2018/01/29' AS DATE) + interval '1 months' AS "1 month after 29/1"
       ,CAST('2018/01/30' AS DATE) + interval '1 months' AS "1 month after 30/1"
       ,CAST('2018/01/31' AS DATE) + interval '1 months' AS "1 month after 31/1"
    
       ,CAST('2018/03/28' AS DATE) + interval '-1 months' AS "1 month before 28/3"
       ,CAST('2018/03/29' AS DATE) + interval '-1 months' AS "1 month before 29/3"
       ,CAST('2018/03/30' AS DATE) + interval '-1 months' AS "1 month before 30/3"
       ,CAST('2018/03/31' AS DATE) + interval '-1 months' AS "1 month before 31/3"
    
       ,CAST('2020/01/28' AS DATE) + interval '1 months' AS "1 month after 28/1(leap year)"
       ,CAST('2020/01/29' AS DATE) + interval '1 months' AS "1 month after 29/1(leap year)"
       ,CAST('2020/01/30' AS DATE) + interval '1 months' AS "1 month after 30/1(leap year)"
       ,CAST('2020/01/31' AS DATE) + interval '1 months' AS "1 month after 31/1(leap year)"
    
       ,CAST('2020/03/28' AS DATE) + interval '-1 months' AS "1 month before 28/3(leap year)"
       ,CAST('2020/03/29' AS DATE) + interval '-1 months' AS "1 month before 29/3(leap year)"
       ,CAST('2020/03/30' AS DATE) + interval '-1 months' AS "1 month before 30/3(leap year)"
       ,CAST('2020/03/31' AS DATE) + interval '-1 months' AS "1 month before 31/3(leap year)"
    

    SQL Server


    Ver : 14.0
    SELECT
        DATEADD(MONTH, 1, CAST('2018/01/28' AS DATE)) AS "1 month after 28/1"
       ,DATEADD(MONTH, 1, CAST('2018/01/29' AS DATE)) AS "1 month after 29/1"
       ,DATEADD(MONTH, 1, CAST('2018/01/30' AS DATE)) AS "1 month after 30/1"
       ,DATEADD(MONTH, 1, CAST('2018/01/31' AS DATE)) AS "1 month after 31/1"
    
       ,DATEADD(MONTH, -1, CAST('2018/03/28' AS DATE)) AS "1 month before 28/3"
       ,DATEADD(MONTH, -1, CAST('2018/03/29' AS DATE)) AS "1 month before 29/3"
       ,DATEADD(MONTH, -1, CAST('2018/03/30' AS DATE)) AS "1 month before 30/3"
       ,DATEADD(MONTH, -1, CAST('2018/03/31' AS DATE)) AS "1 month before 31/3"
    
       ,DATEADD(MONTH, 1, CAST('2020/01/28' AS DATE)) AS "1 month after 28/1(leap year)"
       ,DATEADD(MONTH, 1, CAST('2020/01/29' AS DATE)) AS "1 month after 29/1(leap year)"
       ,DATEADD(MONTH, 1, CAST('2020/01/30' AS DATE)) AS "1 month after 30/1(leap year)"
       ,DATEADD(MONTH, 1, CAST('2020/01/31' AS DATE)) AS "1 month after 31/1(leap year)"
    
       ,DATEADD(MONTH, -1, CAST('2020/03/28' AS DATE)) AS "1 month before 28/3(leap year)"
       ,DATEADD(MONTH, -1, CAST('2020/03/29' AS DATE)) AS "1 month before 29/3(leap year)"
       ,DATEADD(MONTH, -1, CAST('2020/03/30' AS DATE)) AS "1 month before 30/3(leap year)"
       ,DATEADD(MONTH, -1, CAST('2020/03/31' AS DATE)) AS "1 month before 31/3(leap year)"
    

    oracle


    Ver : 11 G
    SELECT
        ADD_MONTHS(TO_DATE('2018/01/28'), 1) AS "1 month after 28/1"
       ,ADD_MONTHS(TO_DATE('2018/01/29'), 1) AS "1 month after 29/1"
       ,ADD_MONTHS(TO_DATE('2018/01/30'), 1) AS "1 month after 30/1"
       ,ADD_MONTHS(TO_DATE('2018/01/31'), 1) AS "1 month after 31/1"
    
       ,ADD_MONTHS(TO_DATE('2018/03/31'), -1) AS "1 month before 28/3"
       ,ADD_MONTHS(TO_DATE('2018/03/31'), -1) AS "1 month before 29/3"
       ,ADD_MONTHS(TO_DATE('2018/03/31'), -1) AS "1 month before 30/3"
       ,ADD_MONTHS(TO_DATE('2018/03/31'), -1) AS "1 month before 31/3"
    
       ,ADD_MONTHS(TO_DATE('2020/01/28'), 1) AS "1 month after 28/1(leap year)"
       ,ADD_MONTHS(TO_DATE('2020/01/29'), 1) AS "1 month after 29/1(leap year)"
       ,ADD_MONTHS(TO_DATE('2020/01/30'), 1) AS "1 month after 30/1(leap year)"
       ,ADD_MONTHS(TO_DATE('2020/01/31'), 1) AS "1 month after 31/1(leap year)"
    
       ,ADD_MONTHS(TO_DATE('2020/03/31'), -1) AS "1 month before 28/3(leap year)"
       ,ADD_MONTHS(TO_DATE('2020/03/31'), -1) AS "1 month before 29/3(leap year)"
       ,ADD_MONTHS(TO_DATE('2020/03/31'), -1) AS "1 month before 30/3(leap year)"
       ,ADD_MONTHS(TO_DATE('2020/03/31'), -1) AS "1 month before 31/3(leap year)"
    FROM
        DUAL
    

    エキストラ


    有効期限を通知する場合は、“データ保持期間は90日”などの月の代わりに日を使用する方が良いかもしれません.