and to experiment with what you get from the constituent elements of what you tried, rather than trying to guess what they are from generate_series's behavior. For example,
I actually did test the expression that I posted, but it might be casting it twice. While your examples that you wrote show 1 month correctly:
SELECT (interval '1 ' || 'month');
?column? | -------------+ 00:00:01month|
SELECT ('1 ' || 'month')::interval;
interval| --------+ 1 mon|
When the expression includes the "::interval" suffix as in the example that I posted it returns 1 second, possibly because it is casting to interval twice (at least on PostgreSQL 16.2 (Debian 16.2-1.pgdg120+2)):
SELECT (interval '1 ' || 'month')::interval;
interval| --------+ 00:00:01|
Anyway, you solved my issue, so thank you very much as always,