Я думаю, что вы можете иметь некоторое концептуальное недопонимание о том, как работает функция TO_DATE, а также о том, как даты обрабатываются СУБД.
YYY-MM-DD
не соответствует формату фактической строки, которую вы используетеimporting (2019-04-20 00:00:00.0
) Вот что говорит вам ошибка.Вы должны сообщить функции TO_DATE, что ожидать в строке даты, которую вы вводите в нее .Вы делаете это с помощью строки формата.если вы не укажете строку формата, которая соответствует формату, который вы на самом деле собираетесь предоставить, то функция не сможет обработать строку.
Далее вы говорите, что хотите преобразовать ее "в датув этом формате "... но это не совсем имеет смысл.TO_DATE преобразует строку в переменную типа DATETIME
- т.е. объект даты.Объект даты не существует ни в каком конкретном формате, он существует как объект.Внутренне он будет хранить информацию о дате способом, который не зависит от любого читаемого человеком формата даты.Формат полностью относится к представлению даты, когда оно рассматривается как строка .Если у вас есть объект даты, вы можете вывести дату в определенном формате, если вы хотите, чтобы человек мог читать ее в стиле, с которым знакома его культура.
Итак, во-первых, чтобы правильно импортировать вашу строку даты как объект даты, вы можете использовать точную строку формата, а также использовать TO_TIMESTAMP вместо TO_DATE, чтобы она захватила значение в секундах:
SELECT TO_TIMESTAMP('2019-04-20 00:00:00.0','YYYY-MM-DD HH24:MI:SS.FF5') from dual;
Есливы запускаете это в консоли, затем SELECT автоматически переформатирует этот объект даты (результат функции TO_DATE) в формат даты по умолчанию, настроенный на вашем сервере / сеансе.
Однако, если вы действительно хотите увидетьэто на экране в определенном формате, вы можете прямо сказать - разумным способом является использование функции TO_CHAR:
SELECT TO_CHAR(TO_TIMESTAMPT('2019-04-20 00:00:00.0','YYYY-MM-DD HH24:MI:SS.FF5'), 'YYYY-MM-DD') from dual;
Полный список спецификаторов формата можно найти здесь (ии в других местах онлайн).
Демонстрация вышеперечисленного здесь: https://dbfiddle.uk/?rdbms=oracle_18&fiddle=619d918ea73953e11b3150c6b560112c