BigQuery SQL WHERE当前日期和-15天之间的日期

Eri*_*ott 8 sql google-bigquery

我试图WHERE在BigQuery的SQL子句中编写以下条件,但我的语法有困难,特别是日期数学:

WHERE date_column between current_date() and current_date() - 15 days
Run Code Online (Sandbox Code Playgroud)

这在MySQL中似乎很容易,但是我无法使用BigQuery SQL.

Joh*_*nHC 14

使用DATE_SUB

select * 
from TableA
where Date_Column between DATE_SUB(current_date(), INTERVAL 15 DAY) and current_date()
Run Code Online (Sandbox Code Playgroud)

请记住,首先between需要最早的日期

  • 我收到此错误“对于参数类型:DATETIME、DATE、DATE,没有匹配的运算符 BETWEEN 签名。支持的签名:(ANY) BETWEEN (ANY) AND (ANY) ` (2认同)
  • @urwaCFC 我也有同样的问题。我的猜测是 date_column 不是日期类型,在我的例子中它是时间戳类型。尝试: current_date() 之间的日期(date_column)... (2认同)
  • @UrvahShabbir 对于时间戳,您可以使用与日期类似的运算符,例如:`WHERE Date_Column BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 15 DAY) AND CURRENT_TIMESTAMP()` (2认同)

Siy*_*ual 7

您应该切换两者 - 语法应如下所示:

WHERE date_column BETWEEN DATE_ADD(CURRENT_DATE(), -15, 'DAY') AND CURRENT_DATE()
Run Code Online (Sandbox Code Playgroud)

  • DATE_ADD 版本有效。bigquery 不支持 DATE_SUB (2认同)
  • 如果您在 bigquery 中使用标准 SQL,DATE_SUB 版本现在可以使用。 (2认同)