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

PostgreSQL hvordan man sammensætter intervalværdi '2 dage'

En del af problemet er, at standard SQL-udtrykket for intervaller citerer tallet, men ikke nøgleordene. Så du skal være forsigtig.

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

I PostgreSQL fungerer det også at citere som '2 dage' og '2 dage'. Så du tror måske, at '2' || 'dage' ville svare til, men det er det ikke.

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

Løsningen, som A.H. sagde, er at støbe resultatstrengen som et interval.

Du kan også bruge en variabel i stedet for 2. Dette genererer en kalender for 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;

Jeg bruger den sidste cast til dato, fordi dato + interval returnerer et tidsstempel.



  1. Tilslutning af SQL Server til en Java-database

  2. Finde samtidige hændelser i en database mellem tidspunkter

  3. Sådan opretter du en udvidelse til SSMS 2019 (v18)

  4. 4 måder at adskille timer, minutter og sekunder fra en tidsværdi i MariaDB