Как сравнить время в столбцах TIMESTAMP с временем (чч: мм: сс) в столбцах формата String - PullRequest
0 голосов
/ 08 октября 2018

Я новичок в BigQuery SQL (фон Oracle) и пытаюсь сравнить время (в формате TIMESTAMP) из таблицы 1, которое лежит между временем начала и окончания, хранящимся в таблице 2, в строковом формате.

Какую из функций TIMESTAMP, EXTRACT или формата я мог бы использовать для написания sql для определения времени окончания из таблицы 1, которое находится между временем начала и конца в таблице 2?

Таблица 1

Row starttime           endtime  
1   2018-07-20 06:45:00 UTC null     
2   2018-07-20 06:45:00 UTC 2018-07-20 08:58:08 UTC

Таблица 2

Row starttime   endtime  
1   06:45:00    06:50:00     
2   14:45:00    14:50:00

Спасибо

Ответы [ 2 ]

0 голосов
/ 09 октября 2018

Ниже для BigQuery STandard SQL

#standardSQL
SELECT t1.starttime, t1.endtime
FROM `project.dataset.table1` t1
JOIN `project.dataset.table2` t2
ON TIME(t1.endtime) BETWEEN PARSE_TIME('%T', t2.starttime) AND PARSE_TIME('%T', t2.endtime)

Вы можете протестировать, поиграть с выше, используя фиктивные данные из вашего вопроса:

#standardSQL
WITH `project.dataset.table1` AS (
  SELECT 1 id, TIMESTAMP '2018-07-20 06:45:00 UTC' starttime, TIMESTAMP '2018-07-20 06:48:08 UTC' endtime UNION ALL
  SELECT 2, '2018-07-20 06:45:00 UTC', '2018-07-20 08:58:08 UTC'
), `project.dataset.table2` AS (
  SELECT 1 id, '06:45:00' starttime, '06:50:00' endtime UNION ALL 
  SELECT 2, '14:45:00', '14:50:00' 
)
SELECT t1.starttime, t1.endtime
FROM `project.dataset.table1` t1
JOIN `project.dataset.table2` t2
ON TIME(t1.endtime) BETWEEN PARSE_TIME('%T', t2.starttime) AND PARSE_TIME('%T', t2.endtime)
0 голосов
/ 08 октября 2018

Вы можете сделать сравнение в виде строк:

select t1.*, t2.*
from table1 t1 join
     table2 t2
     on format_timestamp('%H:%M:%S', t1.endtime) between t2.starttime and t2.endtime;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...