PostgreSQL
 sql >> Base de données >  >> RDS >> PostgreSQL

PostgreSQL comment concaténer la valeur d'intervalle '2 jours'

Une partie du problème est que l'expression SQL standard pour les intervalles cite le nombre, mais pas les mots-clés. Il faut donc être prudent.

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

Dans PostgreSQL, les guillemets tels que '2 jours' et '2 jours' fonctionnent également. Donc vous pourriez penser que '2' || ' jours' serait équivalent, mais ce n'est pas le cas.

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

La solution, comme l'a dit A.H., est de convertir la chaîne de résultat en intervalle.

Vous pouvez également utiliser une variable à la place de 2. Cela génère un calendrier pour 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;

J'utilise cette distribution finale à ce jour, car date + intervalle renvoie un horodatage.