Даты не имеют формата - они представлены внутри 7 или 8 байтами . Если вы хотите, чтобы дата имела формат, вам необходимо преобразовать ее в тип данных, который может быть отформатирован (то есть строка). Когда пользовательский интерфейс, который вы используете, должен отображать дату, он неявно преобразует ее в строку, а Oracle использует параметр сеанса NLS_DATE_FORMAT
в качестве формата по умолчанию.
Вы можете изменить это, используя:
ALTER SESSION SET NLS_DATE_FORMAT = 'DD-MON-YYYY';
Тогда либо ваш запрос, либо, используя литерал даты:
SELECT DATE '1900-01-01' FROM DUAL
Будет неявно отформатирован с использованием NLS_DATE_FORMAT
, когда пользовательский интерфейс отображает их.
Или по вашему запросу:
SELECT COALESCE( myDtColumn, DATE '1900-01-01' ) as myDt
FROM your_table;
Если вы не хотите изменять параметры сеанса, используйте TO_CHAR( date_value, 'DD-MON-YYYY' )
:
SELECT TO_CHAR( COALESCE( myDtColumn, DATE '1900-01-01' ), 'DD-MON-YYYY' ) as myDt
FROM your_table;