Метка времени BigQuery в мм: ss

#sql #google-analytics #google-bigquery

#sql #google-analytics #google-bigquery

Вопрос:

У меня есть запрос, который дает мне временные метки в приведенном ниже формате:

2020-10-25 09:58:21.479 UTC

2020-10-25 10:18:22.737105 UTC

Что я хотел бы сделать, это вычислить разницу между двумя временами и отобразить в формате mm: ss? Для моего примера вывод будет 20:01

 SELECT
MIN(ts) AS session_start_time,
MAX(ts) AS session_end_time,
FROM(
SELECT
  event_date AS date,
  user_pseudo_id AS user_id,
  event_name,
  key,
  value,
  TIMESTAMP_MICROS(event_timestamp) AS ts,
FROM
  `table _name`,
  UNNEST (event_params) AS event_params
WHERE
  _TABLE_SUFFIX BETWEEN "20201025"
  AND FORMAT_DATE('%Y%m%d', DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY))
  AND event_name != 'view_search_results'
  AND user_pseudo_id = '4B132ED3654C4293B9820D8203282B0D'
ORDER BY ts ASC
  

Ответ №1:

Вы можете получить результат как время, используя:

 select time_add(time '00:00:00', interval timestamp_diff(max(ts), min(ts), millisecond) millisecond)
  

Затем, если вы хотите, чтобы это было как строка в определенном формате:

 select time_format('%M:%S', time_add(time '00:00:00', interval timestamp_diff(max(ts), min(ts), millisecond) millisecond))