Teradata:将间隔时间(2)转换为分钟时出错
问题描述:
我有一个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
时,就会失败,错误
“间隔字段溢出”
希望这将有助于: - )
+0
最大值是359999,现在是35999.我认为这只是你的错误。 –
+0
是的。感谢您指出。让我更新:-) – zarruq
请分享'col1'的样本值。 – zarruq
这两个值都在我的最后转换得很好。即在'BTET'中分别以'5192'和'8734'为'1:26'和'2:25',以及在'sqla'和'bteq'中以'ANSI'模式。请分享'col1'的最大值' – zarruq