Ich habe mich gefragt, ob jemand bei einigen Postgres helfen kann. Ich habe eine Tabelle mit einer Spalte namens mydate
postgres date type. Ich möchte so etwas tun wie:
SELECT * FROM MyTable WHERE mydate > [Today-1year]
Ich habe Postgres noch nie benutzt und ich bin sicher, ich muss nur den Namen einiger Funktionen kennen - ich werde die Referenz gerne selbst nachschlagen. Kann mich jemand in die richtige Richtung weisen?
Vielen Dank!
sql
postgresql
Joseph
quelle
quelle
Antworten:
Wenn Sie nur über das Datum und die Zeit nicht kümmern, Ersatz
current_date
fürnow()
quelle
now()
ein Zeitstempel ist, sodass dieser Bereich auch nur einen Teil des Tages von vor genau einem Jahr und einen Teil des heutigen Tages umfasst. Wenn Sie an ganzen Tagen filtern möchten,now()::date
besetzen Sie, wie von Alex Howansky vorgeschlagen.current_date
anstelle vonnow()
Ich denke, das wird es tun:
quelle
interval '1 year'
dazu Schaltjahre nicht berücksichtigt werden. Das ist vielleicht kein Problem von Ihnen, aber wenn ja, verwenden Sie meine Antwort.now()
Gibt einen Zeitstempel zurück. Nach dem Subtrahieren erhalten'1 day'
Sie einen Zeitstempel, der wahrscheinlich einen Teil des Tages herausfiltert, an dem Sie interessiert sind. Die meisten Menschen möchten an einem einzigen ganzen Tag filtern und verwenden dahernow()::date
oderCURRENT_DATE
ist erforderlich.Dies sollte Ihnen das aktuelle Datum minus 1 Jahr geben:
quelle
Sie können dies auch mit der
age()
Funktion überprüfenselect * from mytable where age( mydate, now() ) > '1 year';
age()
wird ein Intervall zurückgeben.Zum Beispiel
age( '2015-09-22', now() )
wird zurückkehren-1 years -7 days -10:56:18.274131
Siehe postgresql-Dokumentation
quelle
age()
es sich um eine PostgreSQL-Funktion handelt (2018-10-05)