Ich habe eine folgende Tabelle projects
.
id title created_at claim_window
1 Project One 2012-05-08 13:50:09.924437 5
2 Project Two 2012-06-01 13:50:09.924437 10
A) Ich möchte die Frist mit der Berechnung finden deadline = created_at + claim_window(No. of days)
.
So etwas wie folgen.
id title created_at claim_window deadline
1 Project One 2012-05-08 13:50:09.924437 5 2012-05-13 13:50:09.924437
2 Project Two 2012-06-01 13:50:09.924437 10 2012-06-11 13:50:09.924437
B] Ich möchte auch die Projekte finden, deren Frist abgelaufen ist
id title created_at claim_window deadline
1 Project One 2012-05-08 13:50:09.924437 5 2012-05-13 13:50:09.924437
Ich versuche so etwas wie folgendes.
SELECT * FROM "projects" WHERE (DATE_PART('day', now()- created_at) >= (claim_window+1))
Aber aus irgendeinem Grund funktioniert es nicht.
postgresql
datetime
Salil
quelle
quelle
timestamp without time zone
UND current_timestamp hat Datentyptimestamp with time zone
, daher bekomme ich keine richtige AntwortLOCALTIMESTAMP
ist eintimestamp without time zone
timestamp
oder identischtimestamptz
, solange sich die Daten auf denselben Zeitpunkt beziehen. Das Hinzufügen eines Tages hat für beide den gleichen Effekt.localtimestamp at time zone 'UTC'
Für mich musste ich das gesamte Intervall in einfache Anführungszeichen setzen, nicht nur den Wert des Intervalls.
select id, title, created_at + interval '1 day' * claim_window as deadline from projects
Anstatt
select id, title, created_at + interval '1' day * claim_window as deadline from projects
Postgres Datums- / Zeitfunktionen
quelle