TO_ CHAR в оракуле - PullRequest
       15

TO_ CHAR в оракуле

0 голосов
/ 08 марта 2019

Я использую oracle 11G и знаю, что TO_CHAR используется для преобразования данных в символы, и этот запрос будет отлично работать для получения дня определенной даты.

SELECT TO_CHAR (DATE '2019-08-15', 'Day') FROM DUAL;

Но это не сработает

SELECT TO_CHAR (DATE '15-08-2019', 'Day') FROM DUAL;  

ОШИБКА: ORA-01847: день месяца должен быть между 1 и последним днем ​​месяца

SELECT TO_CHAR (DATE '15-aug-19', 'Day') FROM DUAL; 

ОШИБКА: ORA-01843: недействительный месяц

Почему вышесказанное не сработает. Я проверил NLS_DATE_FORMAT, он отображает «DD-MON-RR». Но в первом запросе это «YYYY-MM-DD».

Что мне здесь не хватает? Пожалуйста, объясните простым английским языком

Ответы [ 2 ]

4 голосов
/ 08 марта 2019

Поскольку YYYY-MM-DD является строковым литеральным форматом в date'YYYY-MM-DD' относительно ANSI 92 SQL стандарт.

Для других типов форматов:вам нужно конвертировать явно, например to_date('15-08-2019','dd-mm-yyyy')

0 голосов
/ 08 марта 2019

Эта проблема связана исключительно с настройками NLS. если вы запустите ниже запрос, вы можете увидеть текущие значения параметров NLS для вашей базы данных

SELECT * FROM NLS_DATABASE_PARAMETERS

если вы хотите изменить свой параметр nls для даты, пожалуйста, выполните запрос ниже

ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MM-YYYYY';
...