ksh*_*e94 6 sql google-bigquery legacy-sql
我正在尝试为连接到 Google BigQuery 的 tableau 仪表板构建查询。我们有每个月数据的表格,但我想在任何给定时间显示过去 30 天的数据(因此它必须跨多个表格)。我当前的查询给出了错误“需要时间戳文字或显式转换为时间戳。” 我一直在寻找有关如何转换为时间戳的帮助,但没有找到任何有用的信息。这是我的代码。
SELECT
DATE(date_time) AS date,
FROM
TABLE_QUERY(myTable, "date(concat(left(table_id,4),'-',right(table_id,2),'-','01')) >= '2017-06-01'")
WHERE
DATE(date_time) >= DATE_ADD(day,-30, current_date())
and DATE(date_time) <= current_date()
ORDER BY
date
Run Code Online (Sandbox Code Playgroud)
任何有关如何使其工作的帮助将不胜感激。
注意:我们使用的是旧版 SQL
小智 22
对于希望使用 BigQuery Standard SQL 执行相同操作的任何人,这将根据当前日期返回过去 30 天的数据。
https://cloud.google.com/bigquery/docs/reference/standard-sql/date_functions#date_add
SELECT
date,
FROM
`<PROJECT>.<DATASET>.<TABLE>`
WHERE
Date >= DATE_ADD(CURRENT_DATE(), INTERVAL -30 DAY);
Run Code Online (Sandbox Code Playgroud)
使用 Google 自己的文档,您似乎需要反转 DATE_ADD() 函数中的参数。应使用三个参数调用该函数,如下所示:
DATE_ADD(<timestamp>,<interval>,<interval_units>)
Run Code Online (Sandbox Code Playgroud)
间隔单位是您引用的时间单位(天、小时、年等)
您收到错误的原因是 Google 正在尝试转换day为某种date格式。
来源:Google 查询参考
引用文字:
DATE_ADD(时间戳、间隔、间隔单位)
将指定的间隔添加到 TIMESTAMP 数据类型。可能的interval_units值包括YEAR、MONTH、DAY、HOUR、MINUTE和SECOND。如果间隔是负数,则从 TIMESTAMP 数据类型中减去该间隔。
例子:
选择 DATE_ADD(TIMESTAMP("2012-10-01 02:03:04"), 5, "年份");
返回: 2017-10-01 02:03:04 UTC
SELECT DATE_ADD(TIMESTAMP("2012-10-01 02:03:04"), -5, "年份");
返回:2007-10-01 02:03:04 UTC
| 归档时间: |
|
| 查看次数: |
14593 次 |
| 最近记录: |