sql >> Base de Datos >  >> RDS >> PostgreSQL

PostgreSQL cómo concat valor de intervalo '2 días'

Parte del problema es que la expresión SQL estándar para intervalos cita el número, pero no las palabras clave. Así que tienes que tener cuidado.

select current_date, current_date + interval '2' day;
--
2012-02-21   2012-02-23 00:00:00

En PostgreSQL, también funcionan las citas como '2 días' y '2 días'. Así que podrías pensar que '2' || 'días' sería equivalente, pero no lo es.

select current_date, current_date + interval '2' || ' days';
--
2012-02-21   2012-02-21 00:00:02 days

La solución, como dijo A.H., es convertir la cadena de resultados como un intervalo.

También puede usar una variable en lugar de 2. Esto genera un calendario 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;

Uso ese lanzamiento final hasta la fecha, porque fecha + intervalo devuelve una marca de tiempo.