首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >时间戳到自定义持续时间

时间戳到自定义持续时间
EN

Stack Overflow用户
提问于 2020-02-13 12:39:20
回答 2查看 161关注 0票数 1

我有两个时间戳,我可以用TIMESTAMP_DIFF得到两个时间戳的差,但我只能在天、小时、分钟等时间内得到差异。我想要的是两个在定制格式上的差异。例如,"3D:5H:23M:08S“或"03:05:23:08”或“3天,5小时,23分钟,8秒”。

这是否可能与BigQuery标准SQL有关?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2020-02-13 13:45:14

下面是BigQuery标准SQL

代码语言:javascript
运行
复制
#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

带输出

代码语言:javascript
运行
复制
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    
票数 2
EN

Stack Overflow用户

发布于 2020-02-13 12:44:37

您可以将差异转换为时间戳,然后根据您的心境使用format_timestamp()

代码语言:javascript
运行
复制
select TIMESTAMP_MILLIS(timestamp_diff(ts1, t23, millisecond))

这提供了一个时间戳值(可能)在1970年代,但您可能只感兴趣的天,小时,和较小的单位。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/60208089

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档