Простой запрос Oracle: литерал не соответствует строке формата
-
28-10-2019 - |
Вопрос
Я хочу выполнить простую функцию в Oracle.Подпись определяется следующим образом:
родовое словоЯ смогу выполнить это с помощью:
родовое словоНо при вводе «newcaselistforvalidation ('2010-01-01', '2011-01-01', 100)» я получаю:
родовое словоЯ немного погуглил, и мне кажется, я не могу понять, как ввести дату в правильном формате.Кто-нибудь может мне помочь?
Решение
Запросите NLS_PARAMETERS в Oracle - тогда вы сможете увидеть, в каком формате ваша БД принимает даты.
Однако обычно я использую функцию to_date ():
родовое словоВ Великобритании для ввода моих дат.
Другие советы
Альтернативой функции to_date () является использование стандартного формата ANSI для литералов DATE или TIMESTAMP:
родовое словоДата и время всегда указываются с использованием правил ISO (ГГГГ-ММ-ДД и 24-часовой формат времени)
Это также работает во многих других (совместимых со стандартами) СУБД.
Лучше не полагаться на конкретное значение в настройках NLS_PARAMETERS , потому что это приведет к тому, что ваша функция прервется в env с другим NLS_DATE_FORMAT .
Я бы явно указал форматирование даты в вашей функции, как предложено в ответе выше
родовое словоВСТАВИТЬ tblDate (dateStart) Ценности ('20 -ИЮН-2013 '); Если вы измените целое число месяца на строку "ДД-МЕСЯЦ-ГГГГ", это будет действительная строка данных без необходимости предварять ее идентификатором ДАТА.