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



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

'04-十一月-2014 10:16:20 AM -0500'

我试过了:

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

这给出了错误:

ORA-01821: date format not recognized

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

那么-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;

你需要使用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;

演示

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

相关内容

  • 没有找到相关文章

最新更新