Igal Sapir schrieb am 01.07.2024 um 00:39: > 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: > > SELECT generate_series( > 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 > )
I am a fan of make_interval() when it comes to creating intervals from dynamic parameters: SELECT generate_series( date_trunc('month', current_date), date_trunc('month', current_date + interval '7 month'), make_interval(months => 1) ) The value for make_interval() can e.g. passed as a parameter from your programming language.