Как использовать SQL с датами в BigQuery - PullRequest
0 голосов
/ 17 декабря 2018

У меня есть следующее WHERE условие:

order_date between date_add(
                      CAST(concat( YEAR(current_timestamp()), '-',
                                  MONTH(current_timestamp()), '-',
                                  DAY(current_timestamp()),' ',
                                  hour(current_timestamp())) as datetime) ,interval -1 hour) 

                      and
                      CAST(concat( YEAR(current_timestamp()), '-',
                                   MONTH(current_timestamp()), '-',
                                   DAY(current_timestamp()), ' ',
                                   hour(current_timestamp())) as datetime)

Это условие хорошо работает на MySQL, но не работает на BigQuery.Это дает:

Error: Function not found: YEAR

Я не понимаю эту ошибку, поскольку YEAR есть SQL standard - BigQuery ее поддерживает.

В чем здесь проблема?(Я ищу стандартное решение SQL)

Я полагаю, что есть и лучшие способы достижения этого условия, поэтому любые предложения по улучшению приветствуются.

Пример: Расчет занимает current_timestamp() и вычисляется на 1 час раньше, поэтому:

, если current_timestamp() = 2018-12-17 11:42:52, то он дает:

Between `2018-12-17 10:00:00`  and `2018-12-17 11:00:00`

1 Ответ

0 голосов
/ 17 декабря 2018

Я думаю, вы хотите:

order_date >= datetime_add(datetime_trunc(current_datetime, hour), interval 1 hour) and
order_date < datetime_trunc(current_datetime, hour)

Для записи, year() не является стандартным SQL - хотя он доступен во многих базах данных.Стандартная функция extract(): extract(year from <val>).

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...