Teradata将秒数转换为小时数

时间:2016-07-16 07:36:15

标签: sql oracle teradata

我在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分59秒

零时59分59秒

09:59:59

99:59:59

100:59:59

有可能吗?

2 个答案:

答案 0 :(得分:5)

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

这是一个简化版本,如果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

答案 1 :(得分:0)

问题是小时部分。 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) ||':'|| 
. . .