繁体   English   中英

如何在 BigQuery 中将新创建的列转换为不同的时间格式?

[英]How do I convert a newly created column to a different time format in BigQuery?

我是 SQL 和 BigQuery 的新手。 我参加了有关数据分析的在线课程,期末项目的一部分是分析数据集并进行演示。

数据集非常大,所以我更愿意使用 SQL 而不是电子表格(我更熟悉电子表格,但我想磨练我的 SQL 技能。)。

  • 仅显示我选择的列的新临时表
  • 将新创建(计算)的列从 INTERVAL 格式转换为 TIME 格式

我运行了这个查询:

SELECT started_at, ended_at, rideable_type, member_casual, ended_at-started_at AS trip_length
  FROM 
  `my-project-2022-10-21.aggregate_divvy_tripdata.12mo_aggregate_table` LIMIT 1000

上面查询的结果现在显示我想要的表,其中只有我需要的列,加上新创建的 trip_length 列。 但是该列是 INTERVAL 格式,我希望它是 TIME 格式。 该计算的源列是 TIMESTAMP 格式。

我知道我可以使用 CAST 或 EXTRACT 来执行此操作,但每次我尝试使用它的某个版本时,都会出现错误。

将 trip_length 转换为 TIME 格式的正确下一步是什么? 我可以在上面的查询中包含该计算还是必须是一个新查询? 我也觉得我应该创建一个临时表来为这个项目工作,但我不太确定该怎么做......

谢谢你的帮助!

我不知道你是否真的想要 TIME 格式的结果,因为如果差异超过 24 小时,你会得到一个错误。 例如,您可以轻松地以秒为单位获取行程持续时间并从那里开始工作。

如果它确实是目标,我还添加了一种以时间格式获取它的方法。


timestamp_diff(ended_at, started_at, second) as duration_in_sec,

time(
  extract(hour from ended_at - started_at),
  extract(minute from ended_at - started_at),
  extract(second from ended_at - started_at)
) as time_format,

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM