[MDEV-17389] sql_mode=ORACLE: Incompatibility in datetime arithmetic Created: 2018-10-08  Updated: 2023-10-18

Status: Open
Project: MariaDB Server
Component/s: None
Affects Version/s: 5.5, 10.0, 10.1, 10.2, 10.3, 10.4
Fix Version/s: 10.4

Type: Bug Priority: Major
Reporter: Alexander Barkov Assignee: Alexander Barkov
Resolution: Unresolved Votes: 0
Labels: None

Issue Links:
Blocks
blocks MDEV-11070 Providing compatibility to other data... Open
Relates
relates to MDEV-32496 TIMESTAMP variant to support YEAR ran... Open

 Description   

Oracle and MariaDB return different results for TIMESTAMP+INTERVAL.

Example #1:

Oracle:

ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF6';
SELECT TIMESTAMP'1000-01-01 00:00:00' + INTERVAL '3287175 23:59:59.999999' DAY(7) TO SECOND AS c1 FROM DUAL;

C1
---------------------------------------------------------------------------
9000-12-29 23:59:59.999999

MariaDB:

SELECT TIMESTAMP'1000-01-01 00:00:00' + INTERVAL '3287175 23:59:59.999999' DAY_MICROSECOND AS c1 FROM DUAL;

+----------------------------+
| c1                         |
+----------------------------+
| 9999-12-31 23:59:59.999999 |
+----------------------------+

PostgreSQL (yet another different result):

SELECT TIMESTAMP'1000-01-01 00:00:00' + INTERVAL '3287175 23:59:59.999999'  DAY TO SECOND AS c1;

             c1             
----------------------------
 9999-12-25 23:59:59.999999

Example #2 (though the year of 0001 is outside of MariaDB DATETIME supported range):

Oracle:

ALTER SESSION SET NLS_DATE_FORMAT='yyyy-mm-dd';
ALTER SESSION SET NLS_TIMESTAMP_FORMAT='YYYY-MM-DD HH24:MI:SS.FF6';
SELECT TIMESTAMP'0001-01-01 00:00:00' + INTERVAL '3652058 23:59:59.999999' DAY(7) TO SECOND AS c1 FROM DUAL;

C1
---------------------------------------------------------------------------
9999-12-29 23:59:59.999999

MariaDB

SELECT TIMESTAMP'0001-01-01 00:00:00' + INTERVAL '3652058 23:59:59.999999' DAY_MICROSECOND AS c1 FROM DUAL;

+----------------------------+
| c1                         |
+----------------------------+
| 9999-12-31 23:59:59.999999 |
+----------------------------+


Generated at Thu Feb 08 08:36:06 UTC 2024 using Jira 8.20.16#820016-sha1:9d11dbea5f4be3d4cc21f03a88dd11d8c8687422.