我想将以下日期转换为这种格式(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;
对于除时区之外的所有内容:
'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;