对于一个记录集,我有一个整数字段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年的增强请求了),因此您总是需要一些解决方法。
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