web-dev-qa-db-fra.com

Comment lister les enregistrements avec date des 10 derniers jours?

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

Est-ce que cela fonctionne sur PostgreSQL?

61
nunos

Oui, cela fonctionne dans PostgreSQL (en supposant que la colonne " date " est du type de données date) Pourquoi ne pas simplement l'essayer?

Le format ANSI SQL standard serait: 

SELECT Table.date 
FROM Table 
WHERE date > current_date - interval '10' day;

Je préfère ce format car cela facilite la lecture (mais c'est le même que current_date - 10).

132

http://www.postgresql.org/docs/current/static/functions-datetime.html indique les opérateurs que vous pouvez utiliser pour travailler avec les dates et les heures (et les intervalles).

Alors tu veux

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

Les opérateurs/fonctions ci-dessus sont documentés en détail:

19
bradley.ayers

D'après mes tests (et le PostgreSQL dox ), il est nécessaire de faire les guillemets différemment des autres réponses et d'inclure également "jour" comme ceci:

SELECT Table.date
  FROM Table 
  WHERE date > current_date - interval '10 day';

Démonstré ici (vous devriez pouvoir l'exécuter sur n'importe quelle base de données Postgres):

SELECT DISTINCT current_date, 
                current_date - interval '10' day, 
                current_date - interval '10 days' 
  FROM pg_language;

Résultat:

2013-03-01  2013-03-01 00:00:00 2013-02-19 00:00:00
4
Highly Irregular

Je vérifierais les types de données.

current_date a le type de données "date", 10 est un nombre et Table.date - vous devez consulter votre table.

0
Dmitriy Naumov

vous pouvez aussi utiliser entre:

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