У меня есть таблица, которая имеет следующие данныеРазница между двумя датами
fromDate | toDate
20JAN11 | 29DEC30
Обе даты являются для 21-го века (то есть 2011 и 2030 г.), но только последние два символа сохраняются.
Почему следующее утверждение (при запуске из в/модуля PL SQL) против приведенных выше данных всегда возвращает положительное значение
dateDifference := (fromDate - toDate)
Если я запускаю следующее заявление от SQLPLUS я получить правильное отрицательное значение что правильно.
select to_date('20JAN11','DDMONYY')-to_Date('29DEC30','DDMONYY') from dual;
Я помню, что читал где-то, что Oracle будет иногда использовать неправильный век, но я довольно не помню точный сценарий, где это будет происходить.
Каков ваш вопрос? Если вы заинтересованы, вставьте/вставьте «20» в строку, но я настоятельно рекомендую изменить тип данных на DATE. –
Я уверен, что там был вопрос (см. 3-е предложение :-)). Тип данных DATE для двух столбцов. Проблема в том, что оператор возвращает положительное значение, если я запускаю его из блока pl/sql. Я знаю, что это сработает, если я назову дату «20», но я попытаюсь выяснить, почему это происходит. Код plsql не использует никакого форматирования, чтобы получить разницу, поэтому у меня был вопрос, что заставляет его делать это. :) – ziggy
Что произойдет с вашей датой, если вы выполните 'alter session set nls_date_format = 'dd mmm yyyy';' и выберите fromDate и toDate? –