Част от проблема е, че стандартният SQL израз за интервали цитира числото, но не и ключовите думи. Така че трябва да внимавате.
select current_date, current_date + interval '2' day;
--
2012-02-21 2012-02-23 00:00:00
В PostgreSQL цитирането като „2 дни“ и „2 дни“ също работи. Така че може да си помислите, че '2' || „дни“ би било еквивалентно, но не е.
select current_date, current_date + interval '2' || ' days';
--
2012-02-21 2012-02-21 00:00:02 days
Решението, както каза A.H., е да изведете резултантния низ като интервал.
Можете също да използвате променлива вместо 2. Това генерира календар за 2012 г.
-- 0 to 365 is 366 days; 2012 is a leap year.
select ('2012-01-01'::date + (n || ' days')::interval)::date calendar_date
from generate_series(0, 365) n;
Използвам това окончателно прехвърляне към днешна дата, защото дата + интервал връща времева марка.