sql - TIMESTAMP 到自定义持续时间
问题描述
我有两个时间戳,我可以使用 得到两个时间戳的差异TIMESTAMP_DIFF
,但我只能得到天、小时、分钟等方面的差异。我想要的是自定义格式的两个时间戳的差异。例如像“ 3D:5H:23M:08S ”或“ 03:05:23:08 ”或“ 3days,5hours,23minutes,8seconds ”。
这可能与 BigQuery 标准 SQL 有关吗?
解决方案
下面是 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
推荐阅读
- flutter - 垂直窗口 TabBar 菜单和颤动中的动画指示器
- flutter - FutureBuilder 中的循环无法正常工作
- typescript - 什么是显示类的当前子实例的键的通用类型?
- asp.net-mvc - 如何在asp核心实体框架中获取子集的子集并传递给viewmodel
- flutter - 如何使用 Flutter 减少对 Firestore 的读取?
- couchbase - N1QL 文档包含对象查询列表
- rust - 将字符串转换为 Vec
在编译时进行模式匹配 - json - objectmapper.readValue() 失败并出现错误“没有从字符串值反序列化的字符串参数构造函数/工厂方法”
- templates - 用于多个类似部署的 helm 单个模板
- python - 如何在 python 中执行以下 matlab 代码?我正在尝试实现相同的 DWT + SVD 方法,但在 python 中