Question

I want to subtract the value in column lag_days from current_date. Usually I would do current_date - interval '1 day'

I'm getting syntax error on the following example to subtract by days:

dkarchive=> select current_date - interval lag_days day from example_tbl;
ERROR:  syntax error at or near "day"
LINE 1: select current_date - interval lag_days day from example_tb...
   
Était-ce utile?

La solution

You don't need to use the interval syntax to begin with. You can simply subtract an integer from a date value, e.g. current_date - 1 is "yesterday".

select current_date - lag_days
from the_table;

If you do want to use an interval, the make_interval() function is quite useful for this:

select current_date - make_interval(days => lag_days)
from the_table;

There is however a difference between the two queries: the first one returns a date value, the second one a timestamp value.

Licencié sous: CC-BY-SA avec attribution
Non affilié à dba.stackexchange
scroll top