我有一個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等
我有一個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等
整數值根據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
時,就會失敗,錯誤
「間隔字段溢出」
希望這將有助於: - )
最大值是359999,現在是35999.我認爲這只是你的錯誤。 –
是的。感謝您指出。讓我更新:-) – zarruq
請分享'col1'的樣本值。 – zarruq
這兩個值都在我的最後轉換得很好。即在'BTET'中分別以'5192'和'8734'爲'1:26'和'2:25',以及在'sqla'和'bteq'中以'ANSI'模式。請分享'col1'的最大值' – zarruq