sql >> Databáze >  >> RDS >> PostgreSQL

PostgreSQL jak spojit hodnotu intervalu '2 dny'

Část problému spočívá v tom, že standardní SQL výraz pro intervaly uvádí číslo, ale ne klíčová slova. Takže musíte být opatrní.

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

V PostgreSQL také fungují citace jako '2 dny' a '2 dny'. Takže si možná myslíte, že '2' || „dny“ by bylo ekvivalentní, ale není.

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

Řešením, jak řekl A.H., je přetypovat výsledný řetězec jako interval.

Můžete také použít proměnnou místo 2. Tím se vygeneruje kalendář na rok 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;

Toto konečné obsazení používám k datu, protože datum + interval vrací časové razítko.



  1. Zdá se, že nastavení schématu v PostgreSQL JDBC nefunguje

  2. Funkce ROWIDTONCHAR() v Oracle

  3. Jak CHAR() funguje v MariaDB

  4. Použití Room DB v projektu knihovny