2013-04-01 32 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 
) 
/