db2 如何在日期字段中添加2小时

gorkyyrv  于 12个月前  发布在  DB2
关注(0)|答案(3)|浏览(230)

我正在使用DB2数据库,其中的time字段是以下字符串:
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

好吧,问题是这个字段是与参考时间同步的,所以关于意大利(我工作的地方)是两个小时前。
我有一个查询,通常我用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"

我需要添加到小时substr只,2小时,使日期到意大利。但我认为问题是在一天的变化,因为如果我有,例如。4月20日22:40,对应于4月21日00:40在意大利。
我该怎么做才能使它工作?

mlnl4t2r

mlnl4t2r1#

请标记您使用的DB2。
如果是DB2LUW或DB2 for I,则可以使用
to_date('12104102000000', 'YYYMMDDHH24MISSFF1') - 100 YEARS + CURRENT TIMEZONE
我猜它适用于DB2 for Z,但我不确定。

qlvxas9a

qlvxas9a2#

如果你想让你的结果是相同的字符串形式,试试这个:

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)
cbjzeqam

cbjzeqam3#

SELECT your_date_column + (quantity HOURS) AS new_date
FROM your_table;

your_date_column替换为包含日期的列,将your_table替换为表名。您可以根据需要调整数量以添加不同的小时数。
例如,要向日期列添加两个小时,可以使用:用途:

SELECT your_date_column + (2 HOURS) AS new_date
FROM your_table;

相关问题