Skip to content
Advertisement

How do I use a prior query’s result when subtracting an interval in Postgres?

I have the following code:

WITH example_var AS 
    (SELECT 3)

SELECT current_date - interval '3 day'

How do I use example_var in in the interval?

I’d like to do something like - interval CONCAT(example_var, 'day') so that I could change what example_var is equal to and therefore change the length of interval but that isn’t working.

Advertisement

Answer

If you want to create an interval from a constant value, you can use the make_interval() function.

But you need to include example_var in the FROM clause. But can’t refer to the actual value, you need to define a column alias for that as well.

WITH example_var (days) AS (  
  values (3) 
)
SELECT current_date - make_interval(days => v.days)
from example_var v

For this specific example, you don’t need to use an interval. You can subtract an integer directly from a date.

WITH example_var (days) AS (  
  values (3) 
)
SELECT current_date - v.days
from example_var v
User contributions licensed under: CC BY-SA
9 People found this is helpful
Advertisement