首页 > 解决方案 > TIMESTAMP 到自定义持续时间

问题描述

我有两个时间戳,我可以使用 得到两个时间戳的差异TIMESTAMP_DIFF,但我只能得到天、小时、分钟等方面的差异。我想要的是自定义格式的两个时间戳的差异。例如像“ 3D:5H:23M:08S ”或“ 03:05:23:08 ”或“ 3days,5hours,23minutes,8seconds ”。

这可能与 BigQuery 标准 SQL 有关吗?

标签: sqlgoogle-bigquery

解决方案


下面是 BigQuery 标准 SQL

#standardSQL
WITH `project.dataset.table` AS (
  SELECT TIMESTAMP '2020-02-13 13:28:50.532153 UTC' start, TIMESTAMP '2020-03-16 18:51:58.532153 UTC' finish UNION ALL
  SELECT TIMESTAMP '2020-02-13 13:28:50.532153 UTC', TIMESTAMP '2020-02-16 18:51:58.532153 UTC'
)
SELECT -- start, finish, 
  FORMAT('%sD:%s', x, FORMAT_TIMESTAMP('%HH:%MM:%SS', y)) custom_format1,
  FORMAT('%s:%s', x, FORMAT_TIMESTAMP('%H:%M:%S', y)) custom_format2,
  FORMAT('%sdays ,%s', x, FORMAT_TIMESTAMP('%Hhours, %Mminutes, %Sseconds', y)) custom_format3
FROM `project.dataset.table`,
UNNEST([CAST(TIMESTAMP_DIFF(finish, start, DAY) AS STRING)]) x,
UNNEST([TIMESTAMP_SECONDS(TIMESTAMP_DIFF(finish, start, SECOND))]) y

带输出

Row custom_format1  custom_format2  custom_format3   
1   32D:05H:23M:08S 32:05:23:08     32days ,05hours, 23minutes, 08seconds    
2   3D:05H:23M:08S  3:05:23:08      3days ,05hours, 23minutes, 08seconds    

推荐阅读