DATE
- это встроенный тип в Oracle, который представлен фиксированным образом, и вы не можете его контролировать.
Итак:
Я хочу этовставить [...] как 08/01/2011 12:00:00 AM
Выше не имеет смысла.Вы не вставляете строку, вы вставляете дату.
Формат полезен только тогда, когда вы хотите:
- для преобразования строки во внутреннее представление даты с помощью
TO_DATE
(маска формата: как разобрать строку); - для преобразования внутреннего представления даты в строку с
TO_CHAR
(маска формата: как отобразить дату).
Таким образом, в основном, в вашем примере вы берете DATE, вы конвертируете его в STRING с некоторым форматом и конвертируете обратно в DATE с тем же форматом.Это не работает.
Теперь, что показывает ваш клиент: это потому, что ваш клиент Oracle не будет отображать поля DATE напрямую, а слой NLS преобразует любое выбранное поле DATE.Так что это зависит от вашей локали по умолчанию.
То, что вы хотите, это SELECT TO_CHAR(SYSDATE,'DD/MM/YYYY') FROM dual;
, который будет явно выполнять преобразование и возвращать строку.
И когда вы хотите вставить дату в базу данных, вы можете использовать TO_DATE
или литералы даты.