我需要将持续时间(以秒为单位)、十进制(18,0)转换为小时、分钟和秒。
e.g.:
8192 Seconds => 2:16:32 (Hours:Minutes:Seconds)
我发现(here)如果秒是文字字符串,我可以这样做,如下所示:
SELECT CAST(INTERVAL '8192' SECOND AS INTERVAL HOUR TO SECOND)
但是当我尝试时:
SELECT Event_Id
, CAST(INTERVAL Duration SECOND AS INTERVAL HOUR TO SECOND)
FROM EVENT_TABLE
WHERE <some conditions>
Event_Id 和 Duration 都在表 EVENT_TABLE 中声明为 Decimal(18,0)
Teradata 抱怨:
[错误 3707]语法错误,在 'INTERVAL' 关键字和整数 8 之间应为字符串或 Unicode 字符文字
在这里使用的正确语法或方法是什么?
解决方案:基于 BellevueBob 的帖子
SELECT Event_Id
, CAST(
Duration SECOND * INTERVAL '0000:01' MINUTE TO SECOND /* 1 */
AS INTERVAL HOUR TO SECOND /* 2 */
)
FROM EVENT_TABLE
WHERE <some conditions>
解释:
- 以秒为单位的已知持续时间乘以一秒长度的间隔
- 将生成的以秒为单位的时间间隔转换为以小时、分钟和秒为单位的时间间隔。