谷歌 bigquery 日期操作

Posted

技术标签:

【中文标题】谷歌 bigquery 日期操作【英文标题】:Google bigquery date manipulation 【发布时间】:2018-05-04 02:43:48 【问题描述】:

我正在尝试在 google bigquery 中运行一个查询,在该查询中我从某个时间减去小时。出于某种原因,我收到错误“DATE_SUB 不支持 HOUR 日期部分”,代码行如下:(嵌入在更大的 sql 语句中)

DATE_SUB(t2.time, INTERVAL -1 HOUR)

我也尝试过这样的 DATE_ADD:

DATE_ADD(t2.click_time, -1, 'hour')

但我收到错误“预期的 INTERVAL 表达式在 ...”

有人对如何解决这个问题有任何建议吗?

我使用的是标准 SQL(未选中使用旧版 sql)。

谢谢!

【问题讨论】:

【参考方案1】:

你应该改用DATETIME_SUB()

#standardSQL
SELECT 
  CURRENT_DATETIME(), 
  DATETIME_SUB(CURRENT_DATETIME(), INTERVAL 1 HOUR)

如果您将字段设置为 TIMESTAMP - 使用 TIMESTAMP_SUB()

#standardSQL
SELECT 
  CURRENT_TIMESTAMP(), 
  TIMESTAMP_SUB(CURRENT_TIMESTAMP(), INTERVAL 1 HOUR)      

【讨论】:

感谢您的评论!出于某种原因,我在表中的时间列属于“TIMESTAMP”类型,但对于该查询,它需要属于“DATETIME”类型。我试过 CAST(t2.time AS DATETIME) 但它似乎不起作用。我做错了吗? 谢谢!这很有帮助

以上是关于谷歌 bigquery 日期操作的主要内容,如果未能解决你的问题,请参考以下文章

BigQuery:使用 DML 原子地替换日期分区

谷歌数据洞察日期问题

复制记录以填补 Google BigQuery 中日期之间的空白

BigQuery - 在给定的时间点获取不同的值

Bigquery,拉取当月的第一天作为日期

BigQuery 谷歌分析自动化问题