Время обрезки в SQL BigQuery

# #sql #date #time #google-bigquery #trim

Вопрос:

В настоящее время я изучаю SQL на BigQuery с помощью сертификации Google по анализу данных на Coursera, и у меня просто есть некоторая путаница в отношении функции 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'
 

^ это код, который я запустил, чтобы получить первое связанное изображение, но я хочу использовать ОБРЕЗКУ, чтобы превратить результат 0-0 0 -0:3:56 в 0:3:56 . Я пробовал использовать RIGHT (), но он не может быть применен ко всем полям, начиная с некоторых поездок в последние дни (поэтому я не могу просто использовать RIGHT(длительность, 7), так как это приведет к обрезке цифр из более длительных поездок.)

Я попытался запустить этот код, в котором я привел длительность в виде строки, а затем использовал ОБРЕЗКУ:

 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 ().

Любая помощь будет признательна!!

Ответ №1:

Пожалуйста, используйте формат:

 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'
 

Комментарии:

1. А-а-а, понятно! Большое спасибо!!