Comments 8
Ну чтож, последние часы тренинга теперь смело можно проспать или прогулять ;) Спасибо.
Стоит напомнить, что каждый раз когда мы делаем запрос
SELECT DATE_FIELD FROM ANY_TABLE

где DATE_FIELD — поле типа DATE, происходит неявное преобразование даты в строку. Продвинутые клиенты типа Toad, SQL Developer и т.п. имеют в собственных опциях формат даты, согласно которому и производится преобразование. sqlplus и клиентские подключения через ODBC, OCI8 и т.п. используют серверную настройку NLS_DATE_FORMAT.

Чтобы не было сюрпризов, надо либо каждое поле с датой оборачивать в to_char с нужным форматом даты (что нудно), либо при подключении выполнить запрос с настройкой NLS_DATE_FORMAT для текущей сессии, например так:
ALTER SESSION SET NLS_DATE_FORMAT='dd.mm.yyyy hh24:mi:ss'

Это избавит от проблем при переезде на другой сервер, где может быть другой формат даты NLS_DATE_FORMAT.
Да, спасибо за идею, добавил раздел «Особенности отображения дат в различных приложениях».
Имхо, для задания единого формата дат для всех сессий удобнее всего использовать ON_LOGON триггер, предложенный Томом, с указанием своего формата.
Явное указание масок для to_date и to_char, конечно, самый надежный вариант, но триггер тоже может обеспечить достаточную степень надежности (если никто сам не будет делать ALTER SESSION :)).
Ого, да это дополнение чуть ли ни на новую статью тянет. Обидно что в старые публикации через сутки почти никто уже не заглядывает. Разве что через поиск иногда приходят.
Only those users with full accounts are able to leave comments. Log in, please.