使用to_char函数在sql中转换日期

时间:2013-05-14 02:40:55

标签: sql oracle to-date to-char

我想将以下日期转换为此格式(DD-MON-YYYY)。

我尝试执行以下查询,但收到错误消息“日期格式无法识别”。

select to_char(to_date('Sat Dec 01 00:00:00 IST 2012','EEE Mon dd HH:mm:ss z yyyy'),'DD-MON-YYYY') from dual;

1 个答案:

答案 0 :(得分:1)

除了时区之外的所有事情:

'DY MON DD HH24:MI:SS YYYY'

对于时区支持,您需要使用支持TO_TIMESTAMP_TZ()等时区的转换函数,并将时区名称设置为Oracle识别的形式。

select to_char( TO_TIMESTAMP_TZ( 
        REPLACE( 'Sat Dec 01 21:00:00 IST 2012','IST','Asia/Calcutta'),
       'DY MON DD HH24:MI:SS TZR YYYY'),'DD-MON-YYYY') from dual;

大多数时区名称和缩写之间的关系是一对多。

SELECT tzname, tzabbrev FROM v$timezone_names where TZABBREV = 'IST'

对于您的示例,在转换之前删除输出中不需要的部分或全部日期部分可能会更容易。

select to_char( to_date( replace('Sat Dec 01 21:00:00 IST 2012','IST',''),
       'DY MON DD HH24:MI:SS YYYY'),'DD-MON-YYYY') from dual;