【发布时间】:2017-05-05 18:11:09
【问题描述】:
我正在尝试在 BigQuery 的 SQL 的WHERE 子句中编写以下条件,但我在语法上遇到了困难,特别是 date 数学:
WHERE date_column between current_date() and current_date() - 15 days
这在 MySQL 中似乎很容易,但我无法让它与 BigQuery SQL 一起使用。
【问题讨论】:
标签: sql google-bigquery
我正在尝试在 BigQuery 的 SQL 的WHERE 子句中编写以下条件,但我在语法上遇到了困难,特别是 date 数学:
WHERE date_column between current_date() and current_date() - 15 days
这在 MySQL 中似乎很容易,但我无法让它与 BigQuery SQL 一起使用。
【问题讨论】:
标签: sql google-bigquery
使用current_date()函数
SELECT ARRAY_TO_STRING(split(cast(current_date() as string),"-"),'')
【讨论】:
这对我有用。
WHERE DATE(date_column) BETWEEN DATE(DATE_ADD(CURRENT_DATE(), -15, 'DAY'))
AND CURRENT_DATE()
【讨论】:
使用DATE_SUB
select *
from TableA
where Date_Column between DATE_SUB(current_date(), INTERVAL 15 DAY) and current_date()
记住,between 首先需要最旧的日期
【讨论】:
No matching signature for operator BETWEEN for argument types: DATETIME, DATE, DATE. Supported signature: (ANY) BETWEEN (ANY) AND (ANY)
WHERE Date_Column BETWEEN TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 15 DAY) AND CURRENT_TIMESTAMP()
您可能应该切换两者 - 语法应该如下:
WHERE date_column BETWEEN DATE_ADD(CURRENT_DATE(), -15, 'DAY') AND CURRENT_DATE()
【讨论】: