将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