秒到小时的 Teradata 转换

Teradata conversion of seconds to hours

我在 Teradata 中将秒数转换为小时数时遇到一点问题。

CAST((TRUNC(seconds/3600) (FORMAT '99')) AS VARCHAR(10)) ||':'|| 
CAST((TRUNC((seconds MOD 3600)/60) (FORMAT '99')) AS VARCHAR(10)) ||':'|| 
CAST((TRUNC(seconds MOD 60) (FORMAT '99')) AS VARCHAR(10)) AS SecToHours 

我需要以 00:00:00 格式将秒转换为分钟和小时,但现在如果我有超过 100 小时而不是 100 小时得到结果 ** 我不想要 '999' 的格式。

等待结果:

时:分:秒

00:00:59

00:59:59

09:59:59

99:59:59

100:59:59

有可能吗??

只需使用可选数字更改格式即可。

这是一个简化版本,如果 seconds 不是 DECIMAL,您也可以删除 TRUNC

(TRUNC( seconds/3600)         (FORMAT 'ZZ99')) ||
(TRUNC((seconds MOD 3600)/60) (FORMAT ':99' )) ||
(TRUNC( seconds MOD 60)       (FORMAT ':99' )) AS SecToHours 

或使用 INTERVAL(如果少于 10000 小时):

seconds * INTERVAL '0000:00:01'  HOUR TO SECOND

问题出在时间部分。一个case语句可以解决问题:

(CASE WHEN seconds < 3600*10 THEN CAST((TRUNC(seconds/3600) (FORMAT '99')) AS VARCHAR(10))
      ELSE CAST(TRUNC(seconds/3600) AS VARCHAR(10))
 END) ||':'|| 
. . .