Google bigquery 与日期_SUB和函数之间的问题
我在创建参数化查询时遇到了这个问题;然后,查询的目的是根据作为变量传递的日期提取过去5个月(不包括当前月份)的数据。表A的基本表模式如下:Google bigquery 与日期_SUB和函数之间的问题,google-bigquery,Google Bigquery,我在创建参数化查询时遇到了这个问题;然后,查询的目的是根据作为变量传递的日期提取过去5个月(不包括当前月份)的数据。表A的基本表模式如下: as_of_date Y X 2019-12-31 1 AB 2019-11-30 2 CD 2019-10-31 3 EF 2019-09-30 4 GH 2019-08-31 5 MN 2019-07-31 6 XYZ 2020-01-31 7 PQR 2020-02-29 8 AAA 以下是我编
as_of_date Y X
2019-12-31 1 AB
2019-11-30 2 CD
2019-10-31 3 EF
2019-09-30 4 GH
2019-08-31 5 MN
2019-07-31 6 XYZ
2020-01-31 7 PQR
2020-02-29 8 AAA
以下是我编写的查询:
WITH
date
AS
(
SELECT CAST("2020-02-29" AS Date) as run_date
)
SELECT DISTINCT CAST(a.as_of_date AS DATE) as_of_date,
FROM A as a
WHERE CAST(a.as_of_date AS DATE) BETWEEN DATE_SUB((SELECT run_date FROM date), INTERVAL 5 Month) AND DATE_SUB((SELECT run_date FROM date), INTERVAL 1 Month)
当run_date设置为“2020-01-31”并返回过去5个月的数据(即12月、11月、10月、9月和8月)时,此查询运行正常。但当日期设置为“2020-02-29”时失败,它只返回4个月的数据。简单的“修复”是添加日期(…,月)
,如下例所示
SELECT DISTINCT CAST(a.as_of_date AS DATE) as_of_date,
FROM `project.dataset.tableA` AS a
WHERE DATE_TRUNC(CAST(a.as_of_date AS DATE), MONTH)
BETWEEN DATE_TRUNC(DATE_SUB((SELECT run_date FROM date_cte), INTERVAL 5 Month), MONTH)
AND DATE_TRUNC(DATE_SUB((SELECT run_date FROM date_cte), INTERVAL 1 Month), MONTH)
很高兴它对你有用。请考虑投票表决。