Может кто-нибудь объяснить мне, почему вывод Query 4 отличается от других, когда запрос 1 возвращает замененные значения, используемые в запросе 2, которые должны совпадать с тем же, что и запрос 4?sql oracle todate difference
Я подозреваю, что это как-то связано с nls_date_format, но я не уверен.
Запрос 1
SELECT TO_DATE(SYSDATE, 'DD/MON/YYYY')FROM DUAL;
TO_DATE(SYSDATE,'DD/MON/YYYY')
------------------------------
02-SEP-15
Запрос 2
SELECT TO_DATE('02-SEP-15') - TO_DATE('01/JAN/07') FROM DUAL;
TO_DATE('02-SEP-15')-TO_DATE('01/JAN/07')
-----------------------------------------
3166
SELECT TO_DATE(SYSDATE, 'DD/MON/YY') - TO_DATE('01/JAN/2007') FROM DUAL;
Запрос 3
TO_DATE(SYSDATE,'DD/MON/YY')-TO_DATE('01/JAN/2007')
---------------------------------------------------
3166
Запрос 4
SELECT TO_DATE(SYSDATE, 'DD/MON/YYYY') - TO_DATE('01/JAN/2007') FROM DUAL;
TO_DATE(SYSDATE,'DD/MON/YYYY')-TO_DATE('01/JAN/2007')
-----------------------------------------------------
-72732
Только после тестирования этого с помощью набора параметров изменения nls_date_format = 'DD-MM-YYYY'; SELECT TO_DATE (SYSDATE, 'DD/MM/YYYY') - TO_DATE ('01/01/2007 ') FROM DUAL; сделал это, чтобы запрос1 фактически вернул '(00) 15 в год, и, изменив дату nls, это не было бы справедливым сравнением в том, что оно «покажет мне больше», поскольку преобразование полностью отличается. Я понял, что это не лучший запрос для использования, я просто не мог различать возвращаемые типы. –