首页 > 解决方案 > 算子大查询标准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)

我哪里错了?

标签: google-bigquerybigquery-standard-sql

解决方案


您的问题是,CreatedDateTIMESTAMP需要转换为DATETIME

它可能是这样的:

其中 DATETIME(CreatedDate) 之间...

但是您可以轻松地为 TIMESTAMP 编写自己的语句

SELECT timestamp_sub(timestamp_trunc(current_timestamp() , DAY),interval 10 小时)


推荐阅读