如何在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小时)
。