Формат даты Oracle: varchar до даты, затем char и затем дата - PullRequest
0 голосов
/ 19 января 2019

У меня есть значение varchar '20-OCT-2019' Я хочу загрузить тот же столбец даты в формате '10/20/2019'.

Я пробовал ниже, но это не дает ожидаемый результат.

select to_date(to_char(to_date('20-OCT-2019','DD-MON-YYYY'),'MM/DD/YYYY'),'MM/DD/YYYY') 
  from dual

Ответы [ 2 ]

0 голосов
/ 19 января 2019

Вы не можете загрузить свои строковые данные в строковый столбец.Таким образом, самое внешнее преобразование to_date не имеет смысла, но если вы хотите отобразить в нужном формате, вам нужно такое преобразование ниже:

select  to_char(
                to_date('20-OCT-2019','DD-MON-YYYY','NLS_DATE_LANGUAGE=ENGLISH')
                   ,'MM/DD/YYYY')
    as "Appearance in New Format"                   
  from dual;

    Appearance in New Format
            10/20/2019 

, не забывая использовать опцию NLS_DATE_LANGUAGE для вашего другого местного языканастройки, отличные от английского (в данном случае OCT: October is an abbreviation in English Language)

PS на самом деле вы не сохраняете столбец даты в определенном формате, как указал @ Боб Джарвис, но они отображаются в зависимости отваши nls_date_format настройки, такие как установка с этим образцом:

alter session set nls_date_format = 'DD-MON-YYYY HH24:MI:SS';

0 голосов
/ 19 января 2019

В Oracle значения DATE не имеют определенного формата, например DD-MON-YYYY ИЛИ DD/MM/RR и т. Д. Все поля DATE содержат подполя для века, года, месяца, дня, часов, минут и секунд, Это означает, что все поля DATE в Oracle действительно являются значениями меток времени с точностью до одной секунды. По умолчанию Oracle преобразует DATE в символьную строку, используя формат DD-MON-YY , но это просто формат по умолчанию - это не означает, что дата хранится в формате DD-MON-RR.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...