Между оператором Big Query Standard SQL - PullRequest
0 голосов
/ 11 сентября 2018

Использование стандартного SQL в BQ - в рамках задачи я хочу найти записи, созданные между 14:00 предыдущего дня и 14:00 текущего дня

Я нашел

SELECT DATETIME_SUB(DATETIME_TRUNC(CURRENT_DATETIME(), DAY), INTERVAL 10 hour) Дает мне 2 вечера вчера

ВЫБРАТЬ DATETIME_ADD (DATETIME_TRUNC (CURRENT_DATETIME (), ДЕНЬ), ИНТЕРВАЛ 14 часов)

Gives me 2pm today

Итак, я предположил, что могу использовать это в своем запросе

Select * from  
TableA  
where CreatedDate Between  
 DATETIME_SUB(DATETIME_TRUNC(CURRENT_DATETIME(), DAY), INTERVAL 10 hour) and DATETIME_ADD(DATETIME_TRUNC(CURRENT_DATETIME(), DAY), INTERVAL 14 hour)

Однако я получаю следующее

Нет соответствующей подписи для оператора МЕЖДУ для типов аргументов: TIMESTAMP, DATETIME, DATETIME. Поддерживаемая подпись: (ЛЮБОЙ) МЕЖДУ (ЛЮБОЙ) И (ЛЮБОЙ)

Где я иду не так?

1 Ответ

0 голосов
/ 11 сентября 2018

Ваша проблема в том, что CreatedDate - это TIMESTAMP, и вам нужно преобразовать в DATETIME

Это может быть как:

где DATETIME (CreatedDate) Между ...

Но вы могли бы легко написать свои собственные заявления для TIMESTAMP

ВЫБРАТЬ timestamp_sub (timestamp_trunc (current_timestamp (), ДЕНЬ), интервал 10 часов)

...