travel_date
уже является типом данных DATE
; нет необходимости использовать TO_DATE( date_string, format_model )
для него, так как функция ожидает строку в качестве первого аргумента, и вы передаете DATE
, поэтому oracle должен применить неявное преобразование (используя параметр сеанса NLS_DATE_FORMAT
в качестве модели формата) и ваше утверждение эффективно:
select schedule_id,
to_char(
to_date(
TO_CHAR(
travel_date,
(SELECT VALUE FROM NLS_SESSION_PARAMETERS WHERE PARAMETER = 'NLS_DATE_FORMAT')
),
'DD-MON-YY'
),
'YYYY-MM-DD'
) as FormattedDate
from schedule
order by schedule_id;
Это создаст проблемы, если модели формата NLS_DATE_FORMAT
и DD-MON-YY
не совпадают.
Вместо этого просто сделайте:
select schedule_id,
to_char( travel_date, 'YYYY-MM-DD' ) as FormattedDate
from schedule
order by schedule_id;
Если в столбце должен быть указан правильный регистр, используйте кавычный идентификатор для обеспечения чувствительности к регистру:
select schedule_id,
to_char( travel_date, 'YYYY-MM-DD' ) as "FormattedDate"
from schedule
order by schedule_id;