Skip to main content

unnest_generate_date_array_using_recursive_cte

Function unnest_generate_date_array_using_recursive_cte 

Source
pub fn unnest_generate_date_array_using_recursive_cte(
    expr: Expression,
) -> Result<Expression>
Expand description

Convert UNNEST(GENERATE_DATE_ARRAY(…)) to recursive CTE.

For dialects that don’t support GENERATE_DATE_ARRAY, this converts:

SELECT * FROM UNNEST(GENERATE_DATE_ARRAY('2024-01-01', '2024-01-31', INTERVAL 1 DAY)) AS d(date_value)

To a recursive CTE:

WITH RECURSIVE _generated_dates(date_value) AS (
    SELECT CAST('2024-01-01' AS DATE) AS date_value
    UNION ALL
    SELECT CAST(DATE_ADD(date_value, 1, DAY) AS DATE)
    FROM _generated_dates
    WHERE CAST(DATE_ADD(date_value, 1, DAY) AS DATE) <= CAST('2024-01-31' AS DATE)
)
SELECT date_value FROM _generated_dates

Reference: transforms.py:68-122