如何将此字符串转换为日期或时间戳?
'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设置设置的日期语言。
那么-5000
TZH
不匹配,试试这个:
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 日期不保留任何时区信息,因此必须使用时间戳。