sql - BigQuery - 将 TIMESTAMP 转换为 HH :MM:SS and then identify TIME_DIFF

标签 sql time google-bigquery timestamp

在 BigQuery 中我想

  1. 将 TIMESTAMP (YYYY-MM-DD HH:MM:SS) 格式转换为 TIME (HH:MM:SS)
  2. 计算 2 个新转换的 TIME 点之间的 TIME_DIFF,以获得持续时间

我现在在哪里

SELECT
   started_at,
   ended_at,
   (ended_at - started_at) AS trip_duration,
   TIMESTAMP_DIFF(ended_at, started_at, SECOND) AS trip_duration_seconds
<表类=“s-表”> <标题> 开始时间 结束时间 trip_duration trip_duration_seconds <正文> 2023-02-12 16:48:18 世界标准时间 2023-02-12 16:55:10 世界标准时间 0-0 0 0:6:52 412

期望的结果是这样的

<表类=“s-表”> <标题> 开始时间 结束时间 trip_duration <正文> 16:48:18 16:55:10 00:06:52

我现在可能可以将其切碎为 STRING,然后再恢复为 TIME 格式。但一定有一个非常简单的解决方案!

最佳答案

您可以考虑以下。

WITH sample_table AS (
  SELECT TIMESTAMP '2023-02-12 16:48:18 UTC' started_at, 
         TIMESTAMP '2023-02-12 16:55:10 UTC' ended_at
)
SELECT EXTRACT(TIME FROM started_at) AS started_at,
       EXTRACT(TIME FROM ended_at) AS ended_at,
       TIME_ADD(
         TIME '0:0:0',
         INTERVAL TIMESTAMP_DIFF(ended_at, started_at, SECOND) SECOND
       ) AS trip_duration 
  FROM sample_table

-- query result
+------------+----------+---------------+
| started_at | ended_at | trip_duration |
+------------+----------+---------------+
| 16:48:18   | 16:55:10 | 00:06:52      |
+------------+----------+---------------+

关于sql - BigQuery - 将 TIMESTAMP 转换为 HH :MM:SS and then identify TIME_DIFF,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/75956300/

相关文章:

mysql - 将外键关系添加到多对多表是否有意义

SQL 左联接表具有不明确的列名

MySQL 查询在一台服务器上运行,而在另一台服务器上运行失败 - 新服务器中的问题

google-bigquery - 如何使用 bigquery 流将嵌套数据插入现有记录

sql - 未定义行数的计算

sql - 调试 MS SQL 存储过程

matlab - 绘制自相关随时间的函数

c# - 10,000 后递归加速

bash - unix中时间命令的开销

sql - BigQuery 选择 * 嵌套列除外