PostgreSQL
 sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL come concatenare il valore dell'intervallo '2 giorni'

Parte del problema è che l'espressione SQL standard per gli intervalli cita il numero, ma non le parole chiave. Quindi devi stare attento.

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

In PostgreSQL, funzionano anche virgolette come "2 giorni" e "2 giorni". Quindi potresti pensare che '2' || ' giorni' sarebbe equivalente, ma non lo è.

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

La soluzione, come ha detto A.H., è lanciare la stringa del risultato come intervallo.

Puoi anche utilizzare una variabile al posto di 2. Questo genera un calendario per il 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 quel cast finale fino ad oggi, perché data + intervallo restituisce un timestamp.