2017-09-25 106 views
0

我有一個Teradata表,其中列中的值是整數,我必須將其轉換爲HOUR(2)到MINUTE。Teradata:將間隔時間(2)轉換爲分鐘時出錯

我曾嘗試下面的語句,但像間隔字段溢出得到錯誤

CAST(CAST(col1 AS DECIMAL(18,0)) * INTERVAL '0000:01' MINUTE TO SECOND AS INTERVAL HOUR(2) TO MINUTE) from table1 

col1中包含像5192或8734等

+0

請分享'col1'的樣本值。 – zarruq

+0

這兩個值都在我的最後轉換得很好。即在'BTET'中分別以'5192'和'8734'爲'1:26'和'2:25',以及在'sqla'和'bteq'中以'ANSI'模式。請分享'col1'的最大值' – zarruq

回答

0

整數值根據Teradata的documentation

INTERVAL HOUR TO MINUTE的值範圍如下。

Type and Precision   | Minimum Value | Maximum Value 
----------------------------------------------------------------- 
INTERVAL HOUR(1) TO MINUTE  -'9:59'    '9:59' 
INTERVAL HOUR(2) TO MINUTE  -'99:59'    '99:59' 
INTERVAL HOUR(3) TO MINUTE  -'999:59'   '999:59' 
INTERVAL HOUR(4) TO MINUTE  -'9999:59'   '9999:59' 

對於問題共享的採樣數據,輸出值處於的INTERVAL HOUR(2) TO MINUTE範圍,如下所示。

SELECT CAST(CAST(5192 AS DECIMAL(18,0)) * INTERVAL '0000:01' MINUTE TO SECOND AS INTERVAL HOUR(2) TO MINUTE) AS Value1, 
     CAST(CAST(8734 AS DECIMAL(18,0)) * INTERVAL '0000:01' MINUTE TO SECOND AS INTERVAL HOUR(2) TO MINUTE) AS Value2; 

結果:

Value1 | Value2 
-------------- 
1:26 2:25 

看來,一些轉換後值都超過在這種情況下,你必須使用從上面的第三選項99:59

對於給定的查詢和樣本數據,如果任何值比359999時,就會失敗,錯誤

間隔字段溢出

希望這將有助於: - )

+0

最大值是359999,現在是35999.我認爲這只是你的錯誤。 –

+0

是的。感謝您指出。讓我更新:-) – zarruq

相關問題