Db2 如何将UTC格式和秒相加

Db2 如何将UTC格式和秒相加,db2,Db2,在我的DB2数据库中,UTC数据的格式为116037144500000,并且有一个字段指示与本地日期的时差,例如3600秒。 我需要求和UTC日期3600秒,这样我就可以得到1160307154500000。下面是一些DB2代码片段 TIMESTAMP('1900-01-01 00:00:00') + INT(SUBSTR(utc_data,1,3)) YEAR + INT(SUBSTR(utc_data,4,2)) + 1 MONTH + INT(SUBSTR(utc_data,6,2)

在我的DB2数据库中,UTC数据的格式为116037144500000,并且有一个字段指示与本地日期的时差,例如3600秒。
我需要求和UTC日期3600秒,这样我就可以得到1160307154500000。

下面是一些DB2代码片段

TIMESTAMP('1900-01-01 00:00:00') 
+ INT(SUBSTR(utc_data,1,3)) YEAR 
+ INT(SUBSTR(utc_data,4,2)) + 1 MONTH 
+ INT(SUBSTR(utc_data,6,2)) DAY 
+ INT(SUBSTR(utc_data,8,2))  HOUR 
+ INT(SUBSTR(utc_data,10,2)) MINUTE 
+ INT(SUBSTR(utc_data,12,2)) SECOND 
+ 1000*INT(SUBSTR(utc_data,15,3)) MICROSECOND 
+ diff_data SECOND

我将把时间戳转换回原始格式的代码留给您:)

您的数学错误<代码>1160307144500000似乎以微秒(1e^-6)为单位,因此再加上3600秒(一小时)将是
11603**107**44500000
。除非是CYYMMDD格式的日期,否则你就完蛋了。嗯,不是真的,但是如果是这样的话,您应该将其存储为实际的时间戳(可能无论如何都应该)。为什么该字段假定为UTC格式,但您正在存储一个附加字段以用于到其他位置的偏移?哪一种可能会改变,尤其是一年两次?此外,在DB2中获取Unix戳记很困难,这可能会使查询出现问题;03=自1月起的月份,依此类推。此时间戳将解码为2016-04-07T14:45:00.000