【问题标题】:Teradata : Error while converting Interval HOUR(2) TO MINUTETeradata:将间隔 HOUR(2) 转换为 MINUTE 时出错
【发布时间】:2018-03-07 00:52:48
【问题描述】:

我有一个 Teradata 表,其中列中的值为整数,我必须将其转换为 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 等。

【问题讨论】:

  • 请分享col1的样本值。
  • 这两个值在我最后都转换得很好。即51928734 分别在BTETANSI 模式下sqlabteq 中的1:262:25。请分享来自col1max

标签: teradata


【解决方案1】:

据天睿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。我认为这只是你的错字。
猜你喜欢
  • 1970-01-01
  • 2012-12-30
  • 1970-01-01
  • 2022-07-20
  • 2015-12-18
  • 2018-10-03
  • 1970-01-01
  • 2017-03-29
  • 2017-07-02
相关资源
最近更新 更多