如何在BigQuery中对日期使用SQL

时间:2018-12-17 11:39:40

标签: sql google-bigquery

我具有以下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

我不理解此错误,因为YEARSQL 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 :(得分:3)

我想你想要

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>)