Teradata:将时间间隔 HOUR(2) 转换为分钟时出错

Teradata : Error while converting Interval HOUR(2) TO MINUTE

我有一个 Teradata table,其中一列中的值为整数,我必须将其转换为 HOUR(2) TO MINUTE。

我已经尝试了下面的语句,但出现了类似 Interval field overflow

的错误
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,它将失败并出现错误

" Interval field Overflow "

希望这会有所帮助:-)