2013-04-01 2 views
0

Oracle SQL автоматически преобразует мое поле D.START_DT в следующем формате:Изменить существующий формат даты to_char

TO_CHAR(D.START_DT,'YYYY-MM-DD') 

что делает его трудным для меня, чтобы изменить свой собственный формат даты.

Я пробовал обернуть другой TO_CHAR вокруг него без везения.

TO_CHAR(TO_CHAR(D.START_DT,'YYYY-MM-DD'), 'MM/DD') 

И я попытался SUBSTR выбрать определенные символы, не повезло. Я думаю, что дефис становится все в порядке.

SUBSTR(TO_CHAR(D.START_DT,'YYYY-MM-DD'), 6, 7) || '/' || SUBSTR(TO_CHAR(D.START_DT,'YYYY-MM-DD'), 9, 10) 

Какая работа для этого?

+0

Можете ли вы использовать функцию Oracle ['REPLACE'] (http://docs.oracle.com/cd/B19306_01/server.102/b14200/functions134.htm)? – bernie

+0

До сих пор я не смог. –

+0

Вы можете изменить формат по умолчанию на все, что хотите: https://forums.oracle.com/forums/thread.jspa?threadID=680596 Не уверен, что вы подразумеваете под «Oracle SQL автоматически преобразует мое поле D.START_DT в xxxx» Если ваше поле является типом DATE, то почему вы можете передать его непосредственно функции TO_DATE в нужном вам формате. Просьба уточнить ваш вопрос и показать полный intial SQL-запрос, который вы используете для выполнения. – OldProgrammer

ответ

0

DATE тип данных не имеет формата. Когда вы видите дату, напечатанную на экране, было что-то, что ПРИКЛАДИЛО формат, который вы видите. Может быть «по умолчанию» в используемой вами программе (например, SQL Developer) или вашей настройке NLS и т. Д. Но тип данных DATE не имеет формата. Таким образом, у вас есть полный контроль над форматом, который вы видите на экране.

Проще всего использовать функцию TO_CHAR:

выберите TO_CHAR (D.START_DT, 'YYYY') из двойного;

возвращает только четырехзначный год.

См. Опции формата даты TO_CHAR.

http://docs.oracle.com/cd/E11882_01/server.112/e26088/sql_elements004.htm#CDEHIFJA

Вы всегда должны поставить формат в вашем коде, а не полагаться на какой-либо другой «по умолчанию», чтобы поставить его.

1

Я согласен с RMAN Экспрессом и не вижу никаких проблем, преобразовывая даты в нужный вам формат ... В случае, если вы все еще есть проблемы, попробуйте это (первый to_char() в внешнем запросе не является обязательным):

SELECT to_char(to_date(some_date, 'YYYY-MM-DD'), 'MM/DD') final_date 
    FROM 
    (
    SELECT TO_CHAR(SYSDATE,'YYYY-MM-DD') some_date -- this is your "auto converted" date 
    FROM dual 
) 
/
Смежные вопросы