Teradata 将大量分钟添加到时间戳导致溢出

Tearadata add large minutes to timestamp results in overflow

对于记录集,我有一个整数字段 DTM,它是从基准日期算起的分钟数。要从基准日期 + 分钟增量获取旅行日期,我的第一直觉是在 Tearadata Studio 中编写:

timestamp '1984-01-01 00:00:00' AS "BASEDATE",
BASEDATE + CAST(DTM AS INTERVAL MINUTE) AS TripDate

查看 INTERVAL MINUTE 类型的规范,它包含一个 SMALLINT,它很容易被我的 DTM 列溢出。 DTM 的示例值为 24282064。

所以我的问题是如何在不损失准确性的情况下获得计算字段 TripDate?我应该把它转换成小时吗?还是几天?这会保持我原来的准确性吗?

我试过了:

DTM/60 AS DTH,

但似乎只输出整数,我认为有些是浮点数。

Teradata 对间隔的四位有效数字的限制非常愚蠢(现在已经有将近 20 年的增强请求),因此您总是需要一些解决方法。

如果已知间隔小于 27 年:

BASEDATE + (DTM * INTERVAL '0000 00:01' DAY TO MINUTE)

但在大多数情况下它更大,然后您必须执行两个步骤:

Cast(DATE '1984-01-01' + (dtm / 1440) AS TIMESTAMP(0)) -- add days first
+ Cast(dtm MOD 1440 AS INTERVAL MINUTE)                -- add the remaining minutes