如何在BigQuery中提取以上月最后一天为基准的近12个月数据
BigQuery 按上月末基准提取过去12个月数据的解决方案
要实现以上月最后一天为基准,提取过去12个月(对应起始月第一天到上月最后一天)的数据,可以通过以下SQL逻辑实现:
核心SQL条件
WHERE DATE(xyz) BETWEEN DATE_TRUNC(DATE_SUB(DATE_TRUNC(CURRENT_DATE(), MONTH) - INTERVAL 1 DAY, INTERVAL 12 MONTH), MONTH) AND DATE_TRUNC(CURRENT_DATE(), MONTH) - INTERVAL 1 DAY
各部分逻辑解释
获取上月最后一天:
DATE_TRUNC(CURRENT_DATE(), MONTH) - INTERVAL 1 DAY
先把当前日期截断到当月第一天,再减1天,就能得到上月的最后一天。比如当前日期是2022/10/27时,这个表达式结果为2022-09-30。计算起始日期(12个月前的当月第一天):
DATE_TRUNC(DATE_SUB(上月最后一天, INTERVAL 12 MONTH), MONTH)
以上月最后一天为基准往前推12个月,再截断到当月第一天,得到起始日期。比如2022/09/30往前推12个月是2021/09/30,截断到当月第一天就是2021-10-01。
验证示例
当当前日期为2022/10/27时,代入后条件会变为:
WHERE DATE(xyz) BETWEEN '2021-10-01' AND '2022-09-30'
完全符合需求的时间范围。
内容的提问来源于stack exchange,提问作者vicky bundele
相关产品推荐
相关产品推荐

