0

我想将以下日期转换为这种格式(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;
4

1 回答 1

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;
于 2013-05-14T04:08:32.850 回答