对于一个记录集,我有一个Integer字段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,
但是似乎只输出整数,并且我认为某些将是浮点数。
答案 0 :(得分:0)
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