add_months挙動確認

(8.0.32)
https://blog.peacois.me/archives/171
https://dev.mysql.com/doc/refman/8.0/ja/date-and-time-functions.html


select date_add('2023-03-31', interval -1 month);

+-------------------------------------------+
| date_add('2023-03-31', interval -1 month) |
+-------------------------------------------+
| 2023-02-28                                |
+-------------------------------------------+

select date_add('2023-02-28', interval 1 month);

+------------------------------------------+
| date_add('2023-02-28', interval 1 month) |
+------------------------------------------+
| 2023-03-28                               |
+------------------------------------------+

(19c)
https://blog.ricemountainer.net/posts/2016/440934217/


select add_months(to_date('20230331','YYYYMMDD'),-1) from dual;

ADD_MONT
--------
23-02-28

select add_months(to_date('20230228','YYYYMMDD'),1) from dual;

ADD_MONT
--------
23-03-31

★add_months関数の場合、月末の1か月後は自動で月末になる

 

select to_date('20230331','YYYYMMDD') + interval '-1' month from dual;

行1でエラーが発生しました。:
ORA-01839: 指定された月に対して日付が無効です

select to_date('20230228','YYYYMMDD') + interval '1' month from dual;

TO_DATE(
--------
23-03-28

 

(15)
https://www.postgresql.jp/document/14/html/functions-datetime.html

 

select date '2023-03-31' + interval '-1 month';

      ?column?
---------------------
 2023-02-28 00:00:00

select date '2023-02-28' + interval '1 month';

      ?column?
---------------------
 2023-03-28 00:00:00

 

(2022)
https://learn.microsoft.com/ja-jp/sql/t-sql/functions/dateadd-transact-sql?view=sql-server-ver16

 

select dateadd(month,-1,'2023-03-31');

2023-02-28 00:00:00.000


select dateadd(month,1,'2023-02-28');

2023-03-28 00:00:00.000