【问题标题】:Between Operator Big Query Standard SQL算子大查询标准SQL之间
【发布时间】:2018-09-11 19:45:21
【问题描述】:

在 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 没有匹配的签名: 时间戳、日期时间、日期时间。支持的签名:(ANY) BETWEEN (任何)和(任何)

我哪里错了?

【问题讨论】:

  • 您的费率很低。对 SO 很重要,您必须使用已发布答案左侧、投票下方的勾号来标记已接受的答案。这将提高您的费率。通过访问此链接了解其工作原理:meta.stackoverflow.com/questions/5234/…

标签: google-bigquery bigquery-standard-sql


【解决方案1】:

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

可能是这样的:

其中 DATETIME(CreatedDate) 之间...

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

选择 timestamp_sub(timestamp_trunc(current_timestamp() , DAY),间隔10小时)

【讨论】:

  • 我已经茫然地凝视了半个小时,却没有意识到这一点。谢谢你
猜你喜欢
  • 1970-01-01
  • 2013-01-19
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多