TO_DATE
преобразует строку в DATE
.DATE
хранится в упакованном двоичном формате, который не читается человеком.Oracle DATE
не имеет формата.Поэтому, когда вы просите программу отобразить дату, она должна преобразовать DATE
в строку.Если вы не укажете явно формат, выполнив явное TO_CHAR
, такой инструмент, как SQL * Plus, преобразует дату в строку, используя NLS_DATE_FORMAT
сеанса.Другие приложения могут выбрать другие способы преобразования даты в строку - например, используя региональные настройки клиента или разрешив пользователю настроить формат.
Если вы хотите вернуть строку в определенномформат, который представляет DATE
, вам нужно будет использовать явный TO_CHAR
.Что-то вроде
SELECT to_char( some_date_column, 'dd/mm/yyyy hh:mi:ss AM' )
FROM some_table
В указанном вами конкретном случае, поскольку у вас в руке есть строка в виде строки, вам просто нужно выбрать ее из двойного, а не делать TO_DATE
для ее преобразованияна дату, а затем TO_CHAR
, чтобы преобразовать его обратно в строку.Я предполагаю, однако, что у вас есть фактическая DATE
в фактической таблице, из которой вы пытаетесь выбрать.