2013-04-01 31 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函數。請澄清您的問題並顯示您要執行的完整初始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 Express和看沒有問題,轉換日期到你需要的任何格式... 如果你仍然有問題,試試這個(在外部查詢第一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 
) 
/