Простой запрос Oracle: литерал не соответствует строке формата

StackOverflow https://stackoverflow.com/questions/4884071

Вопрос

Я хочу выполнить простую функцию в 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 '); Если вы измените целое число месяца на строку "ДД-МЕСЯЦ-ГГГГ", это будет действительная строка данных без необходимости предварять ее идентификатором ДАТА.

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top