google-bigquery - 算子大查询标准SQL之间
问题描述
在 BQ 中使用标准 SQL - 作为任务的一部分,我想搜索在前一天下午 2 点和当天下午 2 点之间创建的记录
我已经找到
SELECT DATETIME_SUB(DATETIME_TRUNC(CURRENT_DATETIME(), DAY), INTERVAL 10 hour)
昨天下午2点给我
SELECT DATETIME_ADD(DATETIME_TRUNC(CURRENT_DATETIME(), DAY), INTERVAL 14 小时)
Gives me 2pm today
所以,我假设我可以在我的查询中使用它
Select * from
TableA
where CreatedDate Between
DATETIME_SUB(DATETIME_TRUNC(CURRENT_DATETIME(), DAY), INTERVAL 10 hour) and DATETIME_ADD(DATETIME_TRUNC(CURRENT_DATETIME(), DAY), INTERVAL 14 hour)
但是我得到以下
参数类型的运算符 BETWEEN 没有匹配的签名:TIMESTAMP、DATETIME、DATETIME。支持的签名:(ANY) BETWEEN (ANY) AND (ANY)
我哪里错了?
解决方案
您的问题是,CreatedDate
您TIMESTAMP
需要转换为DATETIME
它可能是这样的:
其中 DATETIME(CreatedDate) 之间...
但是您可以轻松地为 TIMESTAMP 编写自己的语句
SELECT timestamp_sub(timestamp_trunc(current_timestamp() , DAY),interval 10 小时)