Teradata转GCP BigQuery:DAY() TO SECOND函数转换咨询
Teradata
DAY() TO SECOND 转BigQuery SQL实现方案 原Teradata语句的作用是计算run_end_dttm与run_start_dttm的时间间隔(精度到秒),再求所有间隔的平均值作为elapsed_time。
标准转换写法
直接使用BigQuery的TIMESTAMP_DIFF函数计算秒级差求平均后转时间间隔,和原逻辑完全对齐:
AVG(TIMESTAMP_DIFF(run_end_dttm, run_start_dttm, SECOND)) * INTERVAL 1 SECOND AS elapsed_time,
可选:输出人类可读格式
如果需要返回天 时:分:秒的可读字符串,可以使用如下写法:
CONCAT( DIV(CAST(AVG(TIMESTAMP_DIFF(run_end_dttm, run_start_dttm, SECOND)) AS INT64), 86400), ' ', FORMAT_TIMESTAMP("%H:%M:%S", TIMESTAMP_SECONDS(MOD(CAST(AVG(TIMESTAMP_DIFF(run_end_dttm, run_start_dttm, SECOND)) AS INT64), 86400))) ) AS elapsed_time_readable,
注意事项
- 若字段类型为
DATETIME而非TIMESTAMP,将TIMESTAMP_DIFF替换为DATETIME_DIFF即可 - 该写法无最大天数限制,完全覆盖原Teradata中
DAY(4)最多支持9999天间隔的精度要求
内容的提问来源于stack exchange,提问作者Zuffido
相关产品推荐
相关产品推荐

