sql >> Databasteknik >  >> RDS >> PostgreSQL

PostgreSQL hur man sammanfogar intervallvärdet '2 dagar'

En del av problemet är att standard SQL-uttryck för intervaller citerar numret, men inte nyckelorden. Så du måste vara försiktig.

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

I PostgreSQL fungerar det också att citera som "2 dagar" och "2 dagar". Så du kanske tror att '2' || "dagar" skulle vara likvärdigt, men det är det inte.

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

Lösningen, som A.H. sa, är att kasta resultatsträngen som ett intervall.

Du kan också använda en variabel i stället för 2. Detta genererar en kalender för 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;

Jag använder den sista casten hittills, eftersom datum + intervall returnerar en tidsstämpel.



  1. Ruby on Rails 3 Kan inte ansluta till lokal MySQL-server via sockeln '/tmp/mysql.sock' på OSX

  2. Övervakning av Percona-distribution för PostgreSQL - nyckelmått

  3. Återställ din WordPress-databas med WP-CLI

  4. Hur man ansluter Airflow till Oracle-databasen