Comment lister les enregistrements avec la date des 10 derniers jours?

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

Cela fonctionne-t-il sur PostgreSQL?

nunos
la source

Réponses:

190

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

Le format SQL ANSI standard serait:

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

Je préfère ce format car il rend les choses plus faciles à lire (mais c'est la même chose que current_date - 10).

un cheval sans nom
la source
1
La requête doit être: SELECT Table.date FROM Table WHERE date> current_date - intervalle '10 jour ';
user2694306
4
@ user2694306: interval '10 day'c'est la syntaxe Postgres. interval '10' dayest la syntaxe basée sur le standard SQL et également supportée par Postgres
a_horse_with_no_name
1
L'intervalle doit être de 9 . 10 vous donne en fait 11 jours en arrière à partir d'aujourd'hui.
David He
1
@DavidHe: cela fait la même chose que la réponse originale. Qui utilise 10, pas9
a_horse_with_no_name
3
Juste une note: sur Redshift, la formulation de @ user2694306 fonctionne: intervalle '10 jours '. L'intervalle «10» jour ne fonctionne pas sur Redshift.
Ben
9

D'après mes tests (et le dox de PostgreSQL ), les citations doivent être faites différemment des autres réponses et devraient également inclure "jour" comme ceci:

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

Démontré 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
Très irrégulier
la source
En fait, j'ai manqué de remarquer que la réponse de Bradley avait raison. Quoi qu'il en soit, je laisse le mien ici comme preuve que c'est la bonne voie. La réponse acceptée est fausse (au moins pour la version de Postgre que je cours)
Très irrégulier
0

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 regarder votre table.

Scherbius.com
la source
0

vous pouvez également utiliser entre:

SELECT Table.date
  FROM Table 
  WHERE date between current_date and current_date - interval '10 day';
Jacks Nogueira
la source
Le betweendoit être avec la valeur la plus basse en premier, donc cela serait correctement fait comme SELECT Table.date FROM Table WHERE date between current_date - interval '10 day' and current_date;
tapez