将TZ字符串格式的TimeStamp转换为Oracle中的TimeStamp

我有字符串格式的时间戳,例如“2015-03-24T07:08:24.000Z”,如何将它转换回时间戳即2015-03-24T07:08 :从ORACLE中的给定字符串24.000Z?将TZ字符串格式的TimeStamp转换为Oracle中的TimeStamp

回答:

推测固定的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;如果实际上在需要转换的值中获得不同的时区,那么您需要提取并应用这些值 - 这是可行的,但很难实现,除非您确实存在这种情况,否则不值得进入。

以上是 将TZ字符串格式的TimeStamp转换为Oracle中的TimeStamp 的全部内容, 来源链接: utcz.com/qa/263125.html

回到顶部