Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/84.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何在BigQuery中使用带日期的SQL_Sql_Google Bigquery - Fatal编程技术网

如何在BigQuery中使用带日期的SQL

如何在BigQuery中使用带日期的SQL,sql,google-bigquery,Sql,Google Bigquery,我有以下条件,其中条件: order_date between date_add( CAST(concat( YEAR(current_timestamp()), '-', MONTH(current_timestamp()), '-', DAY(current_timestamp()),' ',

我有以下
条件,其中
条件:

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标准
——BigQuery确实支持它

这里有什么问题?(我正在寻找SQL标准解决方案)

我想也有更好的方法来达到这个条件,所以任何改进建议都是受欢迎的

示例: 计算采用
当前时间戳()
并提前1小时计算,因此:

如果
current_timestamp()=2018-12-17 11:42:52
它给出:

Between `2018-12-17 10:00:00`  and `2018-12-17 11:00:00`
我想你想要:

order_date >= datetime_add(datetime_trunc(current_datetime, hour), interval 1 hour) and
order_date < datetime_trunc(current_datetime, hour)
order\u date>=datetime\u add(datetime\u trunc(当前日期时间,小时),间隔1小时)和
订单日期<日期时间(当前日期时间,小时)

作为记录,
year()
不是标准的SQL——尽管它在许多数据库中都可用。标准函数是
extract()
extract(year from)

错误:函数DATETIME没有匹配的签名。参数类型为:TIMESTAMP,DATE\u TIME\u PART。支持的签名:DATETIME\u TRUNC(DATETIME,DATE\u TIME\u PART)在[1:24]@Luis。此答案中没有时间戳。这在BigQuery中运行良好:
datetime\u add(datetime\u trunc(当前日期时间,小时),间隔1小时)