推测固定的T和Z让你感到困惑,因为它们不是正常的元素。但the documentation说:
可以包括日期格式模型中,这些字符:
标点符号,如连字符,斜线,逗号,句号和冒号
字符文字,用双引号标记
所以你围住T和的Z双引号,因为"T"和"Z",在你的格式模型中。
如果你没有在时区interersted你可以使用the to_timestamp() function:
to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
或者,如果你想有一个与时区,你可以使用the to_timestamp_tz() function,这将默认为当前会话时区(如您实际上并没有指定一个位置时,Z不被解释为祖鲁/ UTC):
to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')
如果你有一个时区希望,并希望将其指定为UTC您可以强制与the from_tz() function:
from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"')), 'UTC')
要看到那些产生差异,指定一个时区的会话作为演示:
alter session set time_zone = 'America/New_York';
select to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as no_tz,
to_timestamp_tz('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"') as default_tz,
from_tz(to_timestamp('2015-03-24T07:08:24.000Z', 'YYYY-MM-DD"T"HH24:MI:SS.FF3"Z"'), 'UTC') as utc_tz
from dual;
NO_TZ
--------------------------------------------------
DEFAULT_TZ
--------------------------------------------------
UTC_TZ
--------------------------------------------------
24-MAR-15 07.08.24.000000000
24-MAR-15 07.08.24.000000000 AMERICA/NEW_YORK
24-MAR-15 07.08.24.000000000 UTC
我假设在Z是固定的值你因此总代表UTC;如果实际上在需要转换的值中获得不同的时区,那么您需要提取并应用这些值 - 这是可行的,但很难实现,除非您确实存在这种情况,否则不值得进入。