PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

PostgreSQL como concatenar o valor do intervalo '2 dias'


Parte do problema é que a expressão SQL padrão para intervalos cita o número, mas não as palavras-chave. Então você tem que ter cuidado.
select current_date, current_date + interval '2' day;
--
2012-02-21   2012-02-23 00:00:00

No PostgreSQL, citar como '2 dias' e '2 dias' também funciona. Então você pode pensar que '2' || 'dias' seria equivalente, mas não é.
select current_date, current_date + interval '2' || ' days';
--
2012-02-21   2012-02-21 00:00:02 days

A solução, como A.H. disse, é converter a string de resultado como um intervalo.

Você também pode usar uma variável no lugar de 2. Isso gera um calendário para 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;

Eu uso essa conversão final até a data, porque data + intervalo retorna um carimbo de data/hora.