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语句中使用它?

在不知道你得到的错误的情况下,问题似乎是你正在尝试将 timestamplog_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 (为了可读性),但由于您的示例代码而保持这样。