webentwicklung-frage-antwort-db.com.de

Wie liste ich Datensätze mit Datum der letzten 10 Tage auf?

SELECT Table.date FROM Table WHERE date > current_date - 10;

Funktioniert das auf PostgreSQL?

61
nunos

Ja, dies funktioniert in PostgreSQL (vorausgesetzt, die Spalte " date " hat den Datentyp date) Warum probieren Sie es nicht einfach aus?

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 die Lesbarkeit erleichtert (es ist jedoch dasselbe wie current_date - 10).

132

http://www.postgresql.org/docs/current/static/functions-datetime.html zeigt Operatoren, mit denen Sie mit Datum und Uhrzeit (und Intervallen) arbeiten können.

Also du möchtest

SELECT "date"
FROM "Table"
WHERE "date" > (CURRENT_DATE - INTERVAL '10 days');

Die Operatoren/Funktionen oben sind ausführlich dokumentiert:

19
bradley.ayers

Nach meinem Test (und dem PostgreSQL dox ) verstehe ich die Anführungszeichen anders als die anderen Antworten und sollte auch "day" wie folgt enthalten:

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
4

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.

0
Dmitriy Naumov

sie können auch dazwischen verwenden:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';
0
Jacks Nogueira