秒到小时的 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) ||':'||
. . .
我在 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) ||':'||
. . .