Напишите запрос для отображения идентификатора и даты расписания в формате «ГГГГ-ММ-ДД» и назовите столбец как FormattedDate. - PullRequest
0 голосов
/ 14 апреля 2019

Напишите запрос для отображения идентификатора и даты расписания в формате «ГГГГ-ММ-ДД» и назовите столбец FormattedDate. Отображение записи в порядке возрастания по идентификатору расписания.

select schedule_id, to_char(to_date(travel_date,'DD-MON-YY'),'YYYY-MM-DD')
 as FormattedDate from schedule order by schedule_id;

Это мой код. когда я оцениваю это, он проходит только один из двух тестовых случаев. Мой вывод соответствует ожиданиям, но я думаю, что в моем коде есть какая-то ошибка.

Это схема:

Schema

1 Ответ

0 голосов
/ 15 апреля 2019

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;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...