Google BigQuery 时间戳比较
Google BigQuery timestamp comparison
有一个 table“tbl1”,包含列“name, surname, log_date”。
“log_date”是 timestamp
类型。
如何检索昨天记录的记录?
我正在努力处理 timestamp
变量,我做了类似的事情:
declare yesterday timestamp
set (yesterday) = select TIMESTAMP_ADD(EXTRACT(Date FROM CURRENT_TIMESTAMP()), interval -1 day);
以上失败,所以我稍后无法在我的脚本中使用它:
SELECT distinct
name
FROM
`xxx.tbl1`
WHERE
log_date > yesterday
我也试过:
SELECT
distinct name
FROM
`xxx.tbl1`
WHERE
log_date > TIMESTAMP_ADD(EXTRACT(Date FROM CURRENT_TIMESTAMP()), interval -1 day)
或
SELECT
distinct name
FROM
`xxx.tbl1`
WHERE
log_date > Select TIMESTAMP_ADD(EXTRACT(Date FROM CURRENT_TIMESTAMP()), interval -1 day)
或
WITH vars AS (
SELECT EXTRACT(Select TIMESTAMP_ADD(EXTRACT(Date FROM CURRENT_TIMESTAMP()), interval -1 day) AS CustomDay
)
SELECT distinct
distinct name
FROM
`xxx.tbl1`, vars
WHERE
log_date > CustomDay
运气不好。
有没有其他方法,如何解析昨天的日期并在稍后的select语句中使用它?
在不知道你得到的错误的情况下,问题似乎是你正在尝试将 timestamp
(log_date
)与 datetime
(提取的 DATE
).这应该有效:
SELECT
distinct name
FROM
`xxx.tbl1`
WHERE
DATE(log_date) = DATE_ADD(EXTRACT(DATE FROM CURRENT_TIMESTAMP()), INTERVAL -1 DAY)
重要提示: 使用 =
进行比较仅获取昨天的日志,>
将获取从今天开始的日志。
一件小事:我会使用 DATE_SUB
来减去天数而不是 DATE_ADD
和 -1
(为了可读性),但由于您的示例代码而保持这样。
有一个 table“tbl1”,包含列“name, surname, log_date”。
“log_date”是 timestamp
类型。
如何检索昨天记录的记录?
我正在努力处理 timestamp
变量,我做了类似的事情:
declare yesterday timestamp
set (yesterday) = select TIMESTAMP_ADD(EXTRACT(Date FROM CURRENT_TIMESTAMP()), interval -1 day);
以上失败,所以我稍后无法在我的脚本中使用它:
SELECT distinct
name
FROM
`xxx.tbl1`
WHERE
log_date > yesterday
我也试过:
SELECT
distinct name
FROM
`xxx.tbl1`
WHERE
log_date > TIMESTAMP_ADD(EXTRACT(Date FROM CURRENT_TIMESTAMP()), interval -1 day)
或
SELECT
distinct name
FROM
`xxx.tbl1`
WHERE
log_date > Select TIMESTAMP_ADD(EXTRACT(Date FROM CURRENT_TIMESTAMP()), interval -1 day)
或
WITH vars AS (
SELECT EXTRACT(Select TIMESTAMP_ADD(EXTRACT(Date FROM CURRENT_TIMESTAMP()), interval -1 day) AS CustomDay
)
SELECT distinct
distinct name
FROM
`xxx.tbl1`, vars
WHERE
log_date > CustomDay
运气不好。
有没有其他方法,如何解析昨天的日期并在稍后的select语句中使用它?
在不知道你得到的错误的情况下,问题似乎是你正在尝试将 timestamp
(log_date
)与 datetime
(提取的 DATE
).这应该有效:
SELECT
distinct name
FROM
`xxx.tbl1`
WHERE
DATE(log_date) = DATE_ADD(EXTRACT(DATE FROM CURRENT_TIMESTAMP()), INTERVAL -1 DAY)
重要提示: 使用 =
进行比较仅获取昨天的日志,>
将获取从今天开始的日志。
一件小事:我会使用 DATE_SUB
来减去天数而不是 DATE_ADD
和 -1
(为了可读性),但由于您的示例代码而保持这样。