我在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
有可能吗?
答案 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) ||':'||
. . .