在ibm db2 sql中如何将以秒为单位的字段转换为days:hours:seconds?

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

我有2个日期字段,使用下面的查询返回秒数:

SELECT
  id,
  targetdate,
  actualdate,
  TIMESTAMPDIFF(2, CHAR (TIMESTAMP(actualdate) - TIMESTAMP(targetdate))) AS difference
FROM mytable;

这将返回两个日期之间的秒数。我需要将其显示为,1 Day 3 hours(示例)。db2中是否有任何函数可以做到这一点?

ulmd4ohb

ulmd4ohb1#

Datetime operations and durations

时间戳持续时间

年、月、日、小时、分钟、秒和小数秒的数字,以DECIMAL表示(14+s,s)数字,其中s是小数秒的位数,范围从0到12。要正确解释该数字,其格式必须为yyyymmddhhmmss. nnnnnnnnnnn,其中yyyy、mm、dd、hh、mm、ss和nnnnnnnnnnn分别表示年数、月数、天、小时、分钟、秒和小数秒。一个时间戳值减去另一个时间戳值的结果是时间戳持续时间,其小数位数与时间戳操作数的最大时间戳精度相匹配。

时间戳算法

时间戳可以减去、增加或减少。

**一个时间戳(TS 1)减去另一个时间戳(TS 2)的结果是时间戳持续时间,该时间戳持续时间指定两个时间戳之间的年数、月数、日数、小时数、分钟数、秒数和小数秒数。**结果的数据类型为DECIMAL(14+s,s),其中s是TS 1和TS 2的最大时间戳精度。

假设您不需要小数秒的示例:

WITH A (TS1, TS2) AS 
(
  VALUES 
  (
    CURRENT TIMESTAMP
  , CURRENT TIMESTAMP - 1 YEAR - 2 MONTH - 3 DAY - 4 HOUR - 5 MINUTE - 6 SECOND
  )
)
SELECT 
  TS1, TS2, D
,  SUBSTR (D,  1, 4) || ' YEARS '
|| SUBSTR (D,  5, 2) || ' MONTHS '
|| SUBSTR (D,  7, 2) || ' DAYS '
|| SUBSTR (D,  9, 2) || ' HOURS '
|| SUBSTR (D, 11, 2) || ' MINUTES '
|| SUBSTR (D, 13, 2) || ' SECONDS '
    AS STRING
FROM
(
  SELECT TS1, TS2, DIGITS (DEC (TS1 - TS2, 14)) AS D
  FROM A
) B

| TS 1型|TS 2型|D级|字符串|
| - -|- -|- -|- -|
| 2022-08-02-17.38.55.282000 | 2021-05-30-13.33.49.282000 | 00010203040506号文件|0001年02月03日04小时05分06秒|

相关问题