我想将以下日期转换为此格式(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;
答案 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;