从多个开始日期和结束日期生成日期数组



我正试图在BQ中生成一个日期数组,其中的日期位于几个开始和结束日期内。

例如,对于一个开始日期和结束日期之间的几天,它看起来是这样的:

SET DATES = GENERATE_DATE_ARRAY(DATE(2020,02,01), DATE(2022, 04, 25), INTERVAL 1 WEEK);

但是,如果我希望包括所有这些日期,我将如何生成DATESevent_date BETWEEN "2020-02-01" AND "2020-04-25", event_date BETWEEN "2021-02-01" AND "2021-04-25", event_date BETWEEN "2022-02-01" AND "2022-04-25")

我没有遇到任何简单的解决办法。

考虑以下

with dates_ranges as (
select  "2020-02-01" start_date, "2020-04-25" end_date union all
select  "2021-02-01", "2021-04-25" union all
select  "2022-02-01", "2022-04-25" 
)
select date
from dates_ranges, 
unnest(generate_date_array(date(start_date), date(end_date), interval 1 week)) date

您可以只创建所有这些单独的数组,然后将它们concat_array(),不是吗?

最新更新