首页 > 解决方案 > 将秒数格式化为 Redshift 中的间隔 HH:MM:SS

问题描述

我正在处理在我的数据管道中以绝对秒数表示的时间量。做类似的事情是相当微不足道的

select 42602 * interval '1 second';

返回11:50:02正确的答案。

但是,当我对实际数据运行相同的逻辑时

select on_call, 
    on_call::int * interval '1 second'
from dev_isaac.agency_time_report
order by agent_name, day_of;

结果间隔列改为填充为 在此处输入图像描述

为什么 redshift 处理这个问题的方式有所不同,是否有一个很好的方法来解决这个问题,而无需手动计算每一块。

标签: amazon-web-servicesamazon-redshift

解决方案


有点令人费解......但这可能适用于 HH:MM 转换:

(DATEDIFF(second,'2011-12-31 8:30:00','2011-12-31 20:30:15')/(60*60))::VARCHAR || ':' || MOD(DATEDIFF(second,'2011-12-31 8:30:00','2011-12-31 20:30:15'),(60*60))

这是我们找到的解决方案:

LTRIM(DATEADD(seconds,DATEDIFF(seconds,order_create,placed_time),'1900-01-01 00:00:00'),'1900-01-01')::time

推荐阅读