Oracle to_date:ORA-01821:无法识别日期格式

时间:2018-10-16 08:54:00

标签: oracle date-formatting to-date

如何将该字符串转换为日期或时间戳?

'2014年11月4日10:16:20 -0500'

我尝试过:

build

出现错误:

select to_date('04-Nov-2014 10:16:20 AM -0500', 'DD-MON-YYYY HH:MI:SS AM TZH') FROM dual;

2 个答案:

答案 0 :(得分:1)

数据类型DATE不支持任何时区信息,因此,如果要使用数据类型TIMESTAMP WITH TIME ZONE,则必须使用它。另外,您还应该考虑由当前用户NLS-Settings设置的日期语言。

然后-5000TZH不匹配,请尝试以下操作:

select 
  TO_TIMESTAMP_TZ('04-Nov-2014 10:16:20 AM -0500', 'DD-MON-YYYY HH:MI:SS AM TZHTZM', 'NLS_DATE_LANGUAGE = American') 
FROM dual;

答案 1 :(得分:0)

您需要使用TO_TIMESTAMP_TZ,它可以解析时区信息:

SELECT
    TO_TIMESTAMP_TZ('04-Nov-2014 10:16:20 AM -0500', 'DD-MON-YYYY HH:MI:SS AM TZHTZM')
FROM dual;

Demo

Oracle日期不保留任何时区信息,因此您必须使用时间戳。