create schema interval_units;
set current_schema = interval_units;
select date_add('1997-12-31 23:59:59',INTERVAL 1 MICROSECOND);
          date_add          
----------------------------
 1997-12-31 23:59:59.000001
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 microsecond);
          date_add          
----------------------------
 1997-12-31 23:59:59.000001
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '111' MICROSECOND);
          date_add          
----------------------------
 1997-12-31 23:59:59.000111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL 1 SECOND);
      date_add       
---------------------
 1998-01-01 00:00:00
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 second);
      date_add       
---------------------
 1998-01-01 00:00:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL 1 MINUTE);
      date_add       
---------------------
 1998-01-01 00:00:59
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 minute);
      date_add       
---------------------
 1998-01-01 00:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL 1 HOUR);
      date_add       
---------------------
 1998-01-01 00:59:59
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 hour);
      date_add       
---------------------
 1998-01-01 00:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL 1 DAY);
      date_add       
---------------------
 1998-01-01 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 day);
      date_add       
---------------------
 1998-01-01 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL 1 WEEK);
      date_add       
---------------------
 1998-01-07 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 week);
      date_add       
---------------------
 1998-01-07 23:59:59
(1 row)

select date_add('1995-01-05', INTERVAL '1' WEEK);
  date_add  
------------
 1995-01-12
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL 1 MONTH);
      date_add       
---------------------
 1998-01-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 month);
      date_add       
---------------------
 1998-01-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL 1 QUARTER);
      date_add       
---------------------
 1998-03-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 quarter);
      date_add       
---------------------
 1998-03-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1' QUARTER);
      date_add       
---------------------
 1998-03-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL 1 YEAR);
      date_add       
---------------------
 1998-12-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',interval 1 year);
      date_add       
---------------------
 1998-12-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:111' SECOND_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:00:00.111
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:111' second_microsecond);
        date_add         
-------------------------
 1998-01-01 00:00:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1.111' SECOND_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:00:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 111' SECOND_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:00:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:111' MINUTE_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1:111' minute_microsecond);
        date_add         
-------------------------
 1998-01-01 00:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1.111' MINUTE_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 111' MINUTE_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:111' MINUTE_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1.111' MINUTE_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 111' MINUTE_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1' MINUTE_SECOND);
      date_add       
---------------------
 1998-01-01 00:01:00
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1' minute_second);
      date_add       
---------------------
 1998-01-01 00:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1' MINUTE_SECOND);
      date_add       
---------------------
 1998-01-01 00:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1:111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1:1:111' hour_microsecond);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1.111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1 111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1:111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1.111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1 111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1:111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1.111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1 111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1:111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1.111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1 111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1' HOUR_SECOND);
      date_add       
---------------------
 1998-01-01 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1:1' hour_second);
      date_add       
---------------------
 1998-01-01 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1' HOUR_SECOND);
      date_add       
---------------------
 1998-01-01 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1' HOUR_SECOND);
      date_add       
---------------------
 1998-01-01 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1' HOUR_SECOND);
      date_add       
---------------------
 1998-01-01 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1' HOUR_MINUTE);
      date_add       
---------------------
 1998-01-01 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1' hour_minute);
      date_add       
---------------------
 1998-01-01 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1' HOUR_MINUTE);
      date_add       
---------------------
 1998-01-01 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1:1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1:1:1:111' day_microsecond);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1:1.111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1:1 111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1:1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1:1.111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1:1 111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1:1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1:1.111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1:1 111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1 1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1 1.111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1 1 111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1:1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1:1.111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1:1 111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1 1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1 1.111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1 1 111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1 1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1 1.111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1 1 111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1 1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1 1.111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1 1 111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-02 01:01:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1:1' DAY_SECOND);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1:1:1' day_second);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1:1' DAY_SECOND);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1:1' DAY_SECOND);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1 1' DAY_SECOND);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1:1' DAY_SECOND);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1 1' DAY_SECOND);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1 1' DAY_SECOND);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1 1' DAY_SECOND);
      date_add       
---------------------
 1998-01-02 01:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1:1' DAY_MINUTE);
      date_add       
---------------------
 1998-01-02 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1:1' day_minute);
      date_add       
---------------------
 1998-01-02 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1:1' DAY_MINUTE);
      date_add       
---------------------
 1998-01-02 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1 1' DAY_MINUTE);
      date_add       
---------------------
 1998-01-02 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1 1' DAY_MINUTE);
      date_add       
---------------------
 1998-01-02 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1' DAY_HOUR);
      date_add       
---------------------
 1998-01-02 00:59:59
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1' day_hour);
      date_add       
---------------------
 1998-01-02 00:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1' DAY_HOUR);
      date_add       
---------------------
 1998-01-02 00:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1' YEAR_MONTH);
      date_add       
---------------------
 1999-01-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',interval '1:1' year_month);
      date_add       
---------------------
 1999-01-31 23:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1 1' YEAR_MONTH);
      date_add       
---------------------
 1999-01-31 23:59:59
(1 row)

select '2020-01-01' + interval 1 microsecond;
          ?column?          
----------------------------
 2020-01-01 00:00:00.000001
(1 row)

select '2020-01-01' + interval 1 second;
      ?column?       
---------------------
 2020-01-01 00:00:01
(1 row)

select '2020-01-01' + interval 1 minute;
      ?column?       
---------------------
 2020-01-01 00:01:00
(1 row)

select '2020-01-01' + interval 1 hour;
      ?column?       
---------------------
 2020-01-01 01:00:00
(1 row)

select '2020-01-01' + interval 1 day;
  ?column?  
------------
 2020-01-02
(1 row)

select '2020-01-01' + interval 1 week;
  ?column?  
------------
 2020-01-08
(1 row)

select '2020-01-01' + interval 1 month;
  ?column?  
------------
 2020-02-01
(1 row)

select '2020-01-01' + interval 1 quarter;
  ?column?  
------------
 2020-04-01
(1 row)

select '2020-01-01' + interval 1 year;
  ?column?  
------------
 2021-01-01
(1 row)

select '2020-01-01' + interval '1.1' second_microsecond;
       ?column?        
-----------------------
 2020-01-01 00:00:01.1
(1 row)

select '2020-01-01' + interval '1:1.1' minute_microsecond;
       ?column?        
-----------------------
 2020-01-01 00:01:01.1
(1 row)

select '2020-01-01' + interval '1:1' minute_second;
      ?column?       
---------------------
 2020-01-01 00:01:01
(1 row)

select '2020-01-01' + interval '1:1:1.1' hour_microsecond;
       ?column?        
-----------------------
 2020-01-01 01:01:01.1
(1 row)

select '2020-01-01' + interval '1:1:1' hour_second;
      ?column?       
---------------------
 2020-01-01 01:01:01
(1 row)

select '2020-01-01' + interval '1:1' hour_minute;
      ?column?       
---------------------
 2020-01-01 01:01:00
(1 row)

select '2020-01-01' + interval '1 1:1:1.1' day_microsecond;
       ?column?        
-----------------------
 2020-01-02 01:01:01.1
(1 row)

select '2020-01-01' + interval '1 1:1:1' day_second;
      ?column?       
---------------------
 2020-01-02 01:01:01
(1 row)

select '2020-01-01' + interval '1 1:1' day_minute;
      ?column?       
---------------------
 2020-01-02 01:01:00
(1 row)

select '2020-01-01' + interval '1 1' day_hour;
      ?column?       
---------------------
 2020-01-02 01:00:00
(1 row)

select '2020-01-01' + interval '1-1' year_month;
  ?column?  
------------
 2021-02-01
(1 row)

select '2020-01-01' + INTERVAL 1 MICROSECOND;
          ?column?          
----------------------------
 2020-01-01 00:00:00.000001
(1 row)

select '2020-01-01' + INTERVAL 1 SECOND;
      ?column?       
---------------------
 2020-01-01 00:00:01
(1 row)

select '2020-01-01' + INTERVAL 1 MINUTE;
      ?column?       
---------------------
 2020-01-01 00:01:00
(1 row)

select '2020-01-01' + INTERVAL 1 HOUR;
      ?column?       
---------------------
 2020-01-01 01:00:00
(1 row)

select '2020-01-01' + INTERVAL 1 DAY;
  ?column?  
------------
 2020-01-02
(1 row)

select '2020-01-01' + INTERVAL 1 WEEK;
  ?column?  
------------
 2020-01-08
(1 row)

select '2020-01-01' + INTERVAL 1 MONTH;
  ?column?  
------------
 2020-02-01
(1 row)

select '2020-01-01' + INTERVAL 1 QUARTER;
  ?column?  
------------
 2020-04-01
(1 row)

select '2020-01-01' + INTERVAL 1 YEAR;
  ?column?  
------------
 2021-01-01
(1 row)

select '2020-01-01' + INTERVAL '1.1' SECOND_MICROSECOND;
       ?column?        
-----------------------
 2020-01-01 00:00:01.1
(1 row)

select '2020-01-01' + INTERVAL '1:1.1' MINUTE_MICROSECOND;
       ?column?        
-----------------------
 2020-01-01 00:01:01.1
(1 row)

select '2020-01-01' + INTERVAL '1:1' MINUTE_SECOND;
      ?column?       
---------------------
 2020-01-01 00:01:01
(1 row)

select '2020-01-01' + INTERVAL '1:1:1.1' HOUR_MICROSECOND;
       ?column?        
-----------------------
 2020-01-01 01:01:01.1
(1 row)

select '2020-01-01' + INTERVAL '1:1:1' HOUR_SECOND;
      ?column?       
---------------------
 2020-01-01 01:01:01
(1 row)

select '2020-01-01' + INTERVAL '1:1' HOUR_MINUTE;
      ?column?       
---------------------
 2020-01-01 01:01:00
(1 row)

select '2020-01-01' + INTERVAL '1 1:1:1.1' DAY_MICROSECOND;
       ?column?        
-----------------------
 2020-01-02 01:01:01.1
(1 row)

select '2020-01-01' + INTERVAL '1 1:1:1' DAY_SECOND;
      ?column?       
---------------------
 2020-01-02 01:01:01
(1 row)

select '2020-01-01' + INTERVAL '1 1:1' DAY_MINUTE;
      ?column?       
---------------------
 2020-01-02 01:01:00
(1 row)

select '2020-01-01' + INTERVAL '1 1' DAY_HOUR;
      ?column?       
---------------------
 2020-01-02 01:00:00
(1 row)

select '2020-01-01' + INTERVAL '1-1' YEAR_MONTH;
  ?column?  
------------
 2021-02-01
(1 row)

select '2020-01-01' + INTERVAL '1-1.1' MINUTE_MICROSECOND;
       ?column?        
-----------------------
 2020-01-01 00:01:01.1
(1 row)

select '2020-01-01' + INTERVAL '1,1' MINUTE_SECOND;
      ?column?       
---------------------
 2020-01-01 00:01:01
(1 row)

select '2020-01-01' + INTERVAL '1.1;1.1' HOUR_MICROSECOND;
       ?column?        
-----------------------
 2020-01-01 01:01:01.1
(1 row)

select '2020-01-01' + INTERVAL '1|1|1' HOUR_SECOND;
      ?column?       
---------------------
 2020-01-01 01:01:01
(1 row)

select '2020-01-01' + INTERVAL '1,1' DAY_HOUR;
      ?column?       
---------------------
 2020-01-02 01:00:00
(1 row)

select '2020-01-01' + INTERVAL '1 1' YEAR_MONTH;
  ?column?  
------------
 2021-02-01
(1 row)

-- special case
select date_add('1997-12-31 23:59:59',INTERVAL '111' SECOND_MICROSECOND);
        date_add         
-------------------------
 1997-12-31 23:59:59.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:111' MINUTE_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:00:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1' MINUTE_SECOND);
      date_add       
---------------------
 1998-01-01 00:00:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '111' HOUR_MICROSECOND);
        date_add         
-------------------------
 1997-12-31 23:59:59.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1' HOUR_SECOND);
      date_add       
---------------------
 1998-01-01 00:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1' HOUR_MINUTE);
      date_add       
---------------------
 1998-01-01 00:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:111' DAY_MICROSECOND);
        date_add         
-------------------------
 1998-01-01 00:00:00.111
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1' DAY_SECOND);
      date_add       
---------------------
 1998-01-01 00:01:00
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1:1' DAY_MINUTE);
      date_add       
---------------------
 1998-01-01 01:00:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1' DAY_HOUR);
      date_add       
---------------------
 1998-01-01 00:59:59
(1 row)

select date_add('1997-12-31 23:59:59',INTERVAL '1' YEAR_MONTH);
      date_add       
---------------------
 1998-01-31 23:59:59
(1 row)

SELECT DATE_ADD('2023-01-01', INTERVAL 1 DAY);
  date_add  
------------
 2023-01-02
(1 row)

SELECT DATE_ADD('2023-01-01', INTERVAL 1 HOUR);
      date_add       
---------------------
 2023-01-01 01:00:00
(1 row)

SELECT DATE_ADD('2019-01-30', INTERVAL 1 MONTH);
  date_add  
------------
 2019-02-28
(1 row)

SELECT DATE_ADD('2016-07-00', INTERVAL 1 DAY);
WARNING:  Incorrect datetime value: "2016-07-00"
CONTEXT:  referenced column: date_add
 date_add 
----------
 
(1 row)

SELECT '2005-03-32' + INTERVAL 1 MONTH;
WARNING:  Incorrect datetime value: "2005-03-32"
 ?column? 
----------
 
(1 row)

reset current_schema;
drop schema interval_units;