SQL BigQuery中的微调时间



我目前正在通过Coursera上的Google数据分析认证在BigQuery上学习SQL,我只是对TRIM()函数有些困惑。因此,对于初学者来说,下面是我想使用TRIM()处理的数据的屏幕截图。输入图片描述

SELECT ride_id, rideable_type, started_at, ended_at,
(SELECT (started_at - ended_at)) AS duration, 
EXTRACT(time from started_at) AS start_time,
EXTRACT(time from ended_at) AS end_time,
EXTRACT(DAYOFWEEK from started_at) AS day_of_the_week
FROM `first-project-325905.bike_2020_april.july_bike`
WHERE member_casual = 'member'

^这是我运行以获得我链接的第一个图像的代码,但我想使用TRIM将结果0-0 0 -0:3:56转换为0:3:56。我尝试过使用RIGHT(),但它不能应用于所有字段,因为一些行程最后几天(所以我不能只使用RIGHT(duration, 7),因为它会从较长的行程中裁剪数字)

我试着运行这段代码,我将持续时间转换为字符串,然后使用TRIM:

SELECT ride_id, rideable_type, started_at, ended_at,
(SELECT TRIM(CAST((started_at - ended_at)AS STRING), "0-0 0 -0:")) AS duration, 
EXTRACT(time from started_at) AS start_time,
EXTRACT(time from ended_at) AS end_time,
EXTRACT(DAYOFWEEK from started_at) AS day_of_the_week
FROM `first-project-325905.bike_2020_april.july_bike`
WHERE member_casual = 'member'

和结果的持续时间出来看起来像:3:56输入图像描述这里

所以我的问题是,是否有一种方法来使用TRIM(),使持续时间看起来像0:3:56而不是3:56?我一直在其他组合"0-0 0 -0:"在第二行第二个代码块但我不能似乎做对了。作为参考,我试图找到平均行程持续时间和最大/最小值,所以我知道我必须在我得到TRIM()正确后再次将数据转换为时间。

任何帮助将不胜感激!!

请使用format:

SELECT ride_id, rideable_type, started_at, ended_at,
(
SELECT format((started_at - ended_at),'HH:mm:ss') AS duration, 
EXTRACT(time from started_at) AS start_time,
EXTRACT(time from ended_at) AS end_time,
EXTRACT(DAYOFWEEK from started_at) AS day_of_the_week
FROM `first-project-325905.bike_2020_april.july_bike`
WHERE member_casual = 'member'

最新更新