Db2 如何在日期字段中添加2小时
我正在使用DB2数据库,其中时间字段为以下字符串: 12104102000000 从左边看,它的意思是:Db2 如何在日期字段中添加2小时,db2,Db2,我正在使用DB2数据库,其中时间字段为以下字符串: 12104102000000 从左边看,它的意思是: > 1 --> is the century 21 --> is the year 04 --> is the month 10 --> are > the hours 20 --> are the minutes 00 --> are the seconds 000 --> are > the milliseconds 问题是这
> 1 --> is the century 21 --> is the year 04 --> is the month 10 --> are
> the hours 20 --> are the minutes 00 --> are the seconds 000 --> are
> the milliseconds
问题是这个字段和参考时间是同步的,所以意大利(我工作的地方)的时间是两个小时前的
我有一个查询,通常使用substr函数提取日期字段,起始部分是:
select substr("Message_Time",4,2) || '/' || substr("Message_Time",6,2) || '/' || '20' || substr("Message_Time",2,2) as "Date",
substr("Message_Time",8,2) || ':' || substr("Message_Time",10,2) as "Hour"
我只需要加上2个小时,把日期带到意大利。
但我认为这是一个日新月异的问题,因为如果我有,例如4月20日22:40,它会回复到意大利4月21日00:40
我应该怎么做才能使它工作?请标记您使用的DB2 如果DB2LUW或DB2用于I,则可以使用
截止日期('12104102000000','yyymmddh24missf1')-100年+当前时区
我想它适用于DB2 for Z,但我不确定。如果希望结果采用相同的字符串形式,请尝试以下方法:
SELECT
SUBSTR (D, 1, 1)
|| SUBSTR
(
TO_CHAR
(
TO_DATE(CAST(19 + SUBSTR(D, 1, 1) AS CHAR(2)) || SUBSTR(D, 2), 'YYYYMMDDHH24MISSFF3') + 2 HOURS
, 'YYYYMMDDHH24MISSFF3'
)
, 3
)
FROM (VALUES '12104102240000') T (D)
我的建议是放弃这一点,停止以这种方式存储日期。相反,使用正式的DB2日期列。如果你想让你当前的问题发挥作用,你会遇到各种各样难看的边缘案例。它由工作环境中监控产品的官方数据库组成。我不能改变这个。