Hello,
I am trying to pass a dynamic interval to generate_series() with date range.
This works as expected, and generates a series with an interval of 1 month:
date_trunc('month', current_date),
date_trunc('month', current_date + interval '7 month'),
interval '1 month'
)
This works as expected and returns an interval of 1 month:
SELECT ('1 ' || 'month')::interval;
But this throws an error (SQL Error [42601]: ERROR: syntax error at or near "'1 '"):
SELECT generate_series(
date_trunc('month', current_date),
date_trunc('month', current_date + interval '7 month'),
interval ('1 ' || 'month')::interval
)
date_trunc('month', current_date),
date_trunc('month', current_date + interval '7 month'),
interval ('1 ' || 'month')::interval
)
And this returns a series with interval of 1 second??
SELECT generate_series(
date_trunc('month', current_date),
date_trunc('month', current_date + interval '7 month'),
(interval '1 ' || 'month')::interval
)
date_trunc('month', current_date),
date_trunc('month', current_date + interval '7 month'),
(interval '1 ' || 'month')::interval
)
Because this returns an interval of 1 second:
SELECT (interval '1 ' || 'month')::interval;
Is that a bug?
I am able to work around the issue using a CASE statement, but shouldn't it work simply by concatenating the string with the || operator?
Thank you,
Igal