sql >> Database >  >> RDS >> PostgreSQL

PostgreSQL hoe intervalwaarde '2 dagen' samen te voegen

Een deel van het probleem is dat de standaard SQL-expressie voor intervallen het getal aanhaalt, maar niet de trefwoorden. Dus je moet voorzichtig zijn.

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

In PostgreSQL werkt citeren als '2 dagen' en '2 dagen' ook. Dus je zou kunnen denken dat '2' || 'dagen' zou gelijk zijn, maar dat is het niet.

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

De oplossing, zoals A.H. zei, is om de resultaatreeks als een interval te casten.

U kunt ook een variabele gebruiken in plaats van 2. Dit genereert een kalender voor 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;

Ik gebruik die definitieve cast tot nu toe, omdat datum + interval een tijdstempel retourneert.



  1. Wat is een databank? En een DBMS?

  2. Hoe u Change Data Capture (CDC) op de hele tabel inschakelt OF CDC op tabel inschakelt met lijst met kolommen in SQL Server

  3. Hoe een XML-bestand in de MySQL-databasetabel te importeren met XML_LOAD(); functie

  4. SQL Server:alle dagen in een datumbereik selecteren, zelfs als er enkele dagen geen gegevens zijn