【问题标题】:Teradata conversion of seconds to hours秒到小时的 Teradata 转换
【发布时间】:2016-11-19 10:07:28
【问题描述】:

我在 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

有可能吗??

【问题讨论】:

    标签: sql oracle teradata


    【解决方案1】:

    只需使用可选数字更改 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
    

    【讨论】:

      【解决方案2】:

      问题在于时间部分。 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) ||':'|| 
      . . .
      

      【讨论】:

        猜你喜欢
        • 2013-05-05
        • 2021-10-29
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2012-06-15
        • 2015-06-02
        相关资源
        最近更新 更多