2016-07-16 18 views
0

我有幾秒鐘到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秒

9點59分59秒

99:59 :59

100:59:59

是否有可能?

回答

4

只需使用可選數字更改FORMAT。

這是一個簡化版本,如果seconds不是十進制,你可能會刪除TRUNC,太:

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

或者使用的時間間隔(如小於10000小時):

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

非常感謝, 2級聯少爽:) – MartinusP

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) ||':'|| 
. . . 
相關問題