我有2个日期字段,使用下面的查询返回秒数:
SELECT id, targetdate, actualdate, TIMESTAMPDIFF(2, CHAR (TIMESTAMP(actualdate) - TIMESTAMP(targetdate))) AS difference FROM mytable;
这将返回两个日期之间的秒数。我需要将其显示为,1 Day 3 hours(示例)。db2中是否有任何函数可以做到这一点?
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秒|
1条答案
按热度按时间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的最大时间戳精度。
假设您不需要小数秒的示例:
| 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秒|