[英]Google BigQuery timestamp comparison
有一个表“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
(为了可读性),但由于您的示例代码而保持这样。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.