【发布时间】:2018-07-05 14:49:06
【问题描述】:
我在 bigquery 中有一个数据集,其中包含一个 TIMESTAMP 列“register_date”(示例值“2017-11-19 22:45:05.000 UTC”)。
我需要根据今天前 x 天或几周的条件过滤记录。 示例查询 选择所有 2 周前的记录。
目前我有这个查询(我觉得这是一种 hack)可以正常工作并返回正确的结果
SELECT * FROM `my-pj.my_dataset.sample_table`
WHERE
(SELECT
CAST(DATE(register_date) AS DATE)) BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -150 DAY)
AND CURRENT_DATE()
LIMIT 10
我的问题是我是否必须在 TIMESTAMP 列上使用所有 CASTing 内容(这似乎使原本简单的查询过于复杂)? 如果我删除 CASting 部分,我的查询不会运行并返回错误。
这是我的简化查询
SELECT
*
FROM
`my-pj.my_dataset.sample_table`
WHERE
register_date BETWEEN DATE_ADD(CURRENT_DATE(), INTERVAL -150 DAY)
AND CURRENT_DATE()
LIMIT
10
导致错误
Query Failed
Error: No matching signature for operator BETWEEN for argument types: TIMESTAMP, DATE, DATE. Supported signature: (ANY) BETWEEN (ANY) AND (ANY) at [6:17]
高度赞赏任何见解。
【问题讨论】:
标签: sql google-bigquery gcp