如何在Google Big Query中查询两个特定日期的对应数据
Big Query筛选两日数据(昨日+去年同日)的WHERE条件写法
核心逻辑是用IN运算符匹配两个指定的目标日期即可,根据你表中时间字段的类型,对应写法如下:
- 字段为DATE类型(常用分区字段类型)
固定日期查询(以你举例的2021-10-25、2020-10-25为例):
动态自动匹配(无需每次手动修改日期,自动取当前的昨日和去年同日):WHERE 你的日期字段名 IN ('2021-10-25', '2020-10-25')WHERE 你的日期字段名 IN ( DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY), -- 计算昨日日期 DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR) -- 计算去年同日日期 ) - 字段为DATETIME/TIMESTAMP类型
需先将字段转为DATE类型,避免时分秒导致匹配失败:WHERE DATE(你的时间字段名) IN ( DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY), DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR) )
优化提示:如果你的表是按日期分区的大表,建议先声明目标日期常量再匹配,可以避免函数运算导致无法触发分区裁剪,降低查询成本:
-- 先声明两个目标日期常量 DECLARE yesterday DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 DAY); DECLARE same_day_last_year DATE DEFAULT DATE_SUB(CURRENT_DATE(), INTERVAL 1 YEAR); -- 查询时直接匹配常量 SELECT * FROM 你的表名 WHERE 你的日期字段名 IN (yesterday, same_day_last_year)
内容的提问来源于stack exchange,提问作者dadel
相关产品推荐
相关产品推荐

