在DB2中如何将UTC格式的日期时间字段作为Query中的参数传递

a14dhokn  于 2022-11-07  发布在  DB2
关注(0)|答案(1)|浏览(209)

我有一个来自外部系统的UTC格式为2022-01-02T08:00:00.000+00:00的日期时间字段。应该在DB2中查询此值以确定记录是否存在。DB2中存储的日期格式为2022-01-01 08:00:00.000。是否有任何方法可以将传入日期转换为2022-01-01 08:00:00.000
最后的查询应该类似于

select * from table where changedate = '2022-01-02T08:00:00.000+00:00'
dl5txlt9

dl5txlt91#

Db2并不以字符串格式存储时间戳,而是使用一些二进制格式。
因此,如果我没猜错的话,您的问题应该改为“如何将timestamp的YYYY-MM-DDTHH24.MI.SS.FF3XXXXXX字符串表示转换为timestamp数据类型”。
不幸的是,在TO_DATE / TIMESTAMP_FORMAT函数中没有这样的内置模式,但您可以使用以下表达式。T列具有timestamp数据类型,并且您可以在select * from table where changedate = ...语句中使用此表达式。

SELECT
  S
, TO_DATE (TRANSLATE (SUBSTR (S, 1, 23), ' ', 'T'), 'YYYY-MM-DD HH24:MI:SS.FF3')
+ CAST (TRANSLATE (SUBSTR (S, 24), '', ':', '') || '00' AS DEC (6)) AS T
FROM
(
VALUES 
  '2022-01-02T08:00:00.000+00:00'
, '2022-01-02T08:00:00.000+03:30'
, '2022-01-02T08:00:00.000-03:30'
) T (S)

| 标准|T形|
| - -|- -|
| 2022年01月02日星期二08:00:00.000+00:00| 2022-01-02-08.00.00.000000|
| 2022年01月02日08:00:00.000+03:30| 2022-01-02-11.30.00.000000|
| 2022年1月2日上午8时00分00秒至下午3时30分|2022-01-02-04.30.00.000000|

相关问题