# #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. А-а-а, понятно! Большое спасибо!!