当前位置: 首页 > 知识库问答 >
问题:

将字符串 ISO-8601 日期转换为预言机的时间戳数据类型

秦斌
2023-03-14

我有一个VARCHAR2类型的ISO-8601日期,如何将该字符串日期转换为oracle db中的时间戳?

日期示例:“2014-09-12T11:53:06 00:00”

也许是像下面这样的,但我不知道是什么格式。

SELECT to_timestamp_tz ('2014-09-12T11:53:06+00:00', ????) FROM DUAL

共有2个答案

燕意蕴
2023-03-14

我有一个应用程序正在对OracleDB数据库(19c)进行查询。应用以 ISO 8601 格式发送时间戳参数,并且该表有一列是 Oracle TIMESTAMP 类型(而不是带有时区类型的 Oracle TIMESTAMP),该列仅用于存储表示 UTC 时间的时间戳。

我认为下面的查询可以工作,但它似乎无法识别被双引号包围的文字:

SELECT * FROM measurements
WHERE measID = '333'
AND measTime > to_timestamp('2020-11-19T05:00:00Z', 'YYYY-MM-DD"T"hh:mm:ss"Z"');
-- Doesn't Work
-- ORA-01810: format code appears twice
-- 01810. 00000 -  "format code appears twice"

以下内容对我有用:

SELECT * FROM measurements
WHERE measID = '333'
AND measTime > SYS_EXTRACT_UTC(TO_UTC_TIMESTAMP_TZ('2020-11-19T05:00:00Z'));
-- Works

共享,因为将 ISO 8601 格式化为 TIMESTAMP 类型在 Oracle 文档中没有立即明确。我在这里找到了这个解决方案:https://oracle-base.com/articles/18c/to_utc_timestamp_tz-function-18c

冯流觞
2023-03-14

日期格式模型元素在日期时间格式模型文档中列出:

SELECT to_timestamp_tz ('2014-09-12T11:53:06+00:00', 'YYYY-MM-DD"T"HH24:MI:SSTZH:TZM')
FROM DUAL

TO_TIMESTAMP_TZ('2014-09-12T11:53:06+00:00','YYYY-MM-DD"T"HH24:MI:SSTZH:TZM')
---------------------------------------------------------------------------
12-SEP-14 11.53.06.000000000 +00:00

固定 T 可以作为字符文本包含:

您可以在日期格式模型中包含以下字符:

  • 标点符号,如连字符、斜杠、逗号、句点和冒号。
  • 字符文字,用双引号括起来

TZH是分区小时,TZM是时区分钟。其余是更常见的模型元素。

 类似资料:
  • 问题内容: 我有一个要求,我要获取两个ISO 8601时间戳格式的字符串,并且必须对其进行比较并获取它们的最大时间戳。字符串采用以下格式。 为了进行比较,我需要将它们转换为DB2时间戳,然后进行比较。问题出在“ T”和“ Z”字母上。因此,我无法施展。我知道我可以简单地 将T和Z进行转换,但是我想知道是否有更好的方法。 我尝试了以下功能,但无法获得所需的结果。 使用DB2 LUW v9.7 问题答

  • 我有一个ISO 8601日期字符串,格式如下: 我需要使用日期字符串作为我在BigQuery中运行的查询的一部分。我正在尝试使用<code>com.google.cloud.bigquery。QueryParameterValue类将其转换为类型为的,如下所示: 这给了我一个错误: Eclipse中时间戳方法的内联帮助声明: 如何将 转换为所需的格式?有没有更好的方法可以使用来处理从ISO 860

  • 问题内容: 我正在获取格式为“ 2009-05-28T16:15:00”的日期时间字符串(我相信这是ISO 8601)。一种可能的选择似乎是使用time.strptime元组的前六个元素并将其传递到datetime构造函数中来解析字符串,例如: 我还没有找到一种“清洁”的方法。有一个吗? 问题答案: 我更喜欢使用dateutil库进行时区处理和一般的可靠日期解析。如果要获得类似ISO 8601的字

  • 问题内容: 我正在尝试以 2015-08-20T08:26:21.000Z* 到 2015-08-20T08:26:21Z 的格式创建字符串 * 我知道可以使用某些String拆分技术来做到这一点,但是我想知道是否有一种优雅的解决方案(只需最少的代码更改)。 以上都是时间字符串,我需要的最后一个是ISO 8601中的Date。http://tools.ietf.org/html/rfc3339#s

  • 问题内容: 在Python中,如何转换这样的字符串: 2010年12月16日,星期四12:14:05 +0000 到ISO 8601格式,同时保留时区? 请注意,原始日期是字符串,并且输出也应该是字符串,而不是类似字符串。 不过,使用第三方库没有问题。 问题答案: 使用dateutil:

  • 问题内容: 如何将以下格式转换为Unix时间戳? 我从数据库获得的格式似乎最后有。我尝试使用以下方法,但没有用: 问题答案: 试试这个查询 此查询