Antworten:
Ja, dies funktioniert in PostgreSQL (vorausgesetzt, die Spalte " Datum " ist vom Datentyp date
). Warum versuchen Sie es nicht einfach?
Das Standard-ANSI-SQL-Format wäre:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10' day;
Ich bevorzuge dieses Format, da es das Lesen erleichtert (aber es ist dasselbe wie current_date - 10
).
interval '10 day'
ist die Postgres-Syntax. interval '10' day
ist die Syntax, die auf dem SQL-Standard basiert und auch von Postgres unterstützt wird
10
, nicht9
http://www.postgresql.org/docs/current/static/functions-datetime.html zeigt Operatoren, mit denen Sie mit Datums- und Uhrzeitangaben (und Intervallen) arbeiten können.
Also du möchtest
SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');
Die oben genannten Operatoren / Funktionen sind detailliert dokumentiert:
Mein Verständnis aus meinen Tests (und dem PostgreSQL-Dox ) ist, dass die Anführungszeichen anders als die anderen Antworten gemacht werden müssen und auch "Tag" wie folgt enthalten sollten:
SELECT Table.date
FROM Table
WHERE date > current_date - interval '10 day';
Hier demonstriert (Sie sollten dies auf jeder Postgres-Datenbank ausführen können):
SELECT DISTINCT current_date,
current_date - interval '10' day,
current_date - interval '10 days'
FROM pg_language;
Ergebnis:
2013-03-01 2013-03-01 00:00:00 2013-02-19 00:00:00
Ich würde Datentypen überprüfen.
current_date hat den Datentyp "date", 10 ist eine Zahl und Table.date - Sie müssen sich Ihre Tabelle ansehen.
Sie können auch zwischen verwenden:
SELECT Table.date
FROM Table
WHERE date between current_date and current_date - interval '10 day';
between
muss zuerst mit dem niedrigsten Wert sein, damit dies korrekt gemacht wird als SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;