Oracle to_date: ORA-01821: 无法识别日期格式
Oracle to_date: ORA-01821: date format not recognized
如何将此字符串转换为日期或时间戳?
'2014 年 11 月 4 日 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
需要使用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 日期不保留任何时区信息,因此您必须使用时间戳。
数据类型DATE
不支持任何时区信息,因此您必须使用数据类型TIMESTAMP WITH TIME ZONE
才能使用它。您还应该考虑当前用户 NLS-Settings 设置的日期语言。
那么-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;
如何将此字符串转换为日期或时间戳?
'2014 年 11 月 4 日 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
需要使用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 日期不保留任何时区信息,因此您必须使用时间戳。
数据类型DATE
不支持任何时区信息,因此您必须使用数据类型TIMESTAMP WITH TIME ZONE
才能使用它。您还应该考虑当前用户 NLS-Settings 设置的日期语言。
那么-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;