2010-10-05 5 views
29

Je souhaite rechercher des enregistrements dans une table (Oracle SQL) à l'aide du champ Date de création dans lequel les enregistrements datent de plus de 30 jours. Il serait bon de trouver des enregistrements en utilisant un opérateur comme> mais si quelqu'un peut suggérer SQL rapide où clause clause pour trouver les enregistrements de plus de 30 jours ce serait bien. Veuillez suggérer la syntaxe d'Oracle car c'est ce que j'utilise.Oracle SQL Clause de recherche d'enregistrements de date antérieure à 30 jours

Répondre

51

Utilisation:

SELECT * 
    FROM YOUR_TABLE 
WHERE creation_date <= TRUNC(SYSDATE) - 30 

SYSDATE renvoie la date & heure; TRUNC réinitialise la date à minuit, vous pouvez donc l'omettre si vous voulez que le creation_date soit 30 jours avant l'heure actuelle.

En fonction de vos besoins, vous pouvez aussi regarder à l'aide ADD_MONTHS:

SELECT * 
    FROM YOUR_TABLE 
WHERE creation_date <= ADD_MONTHS(TRUNC(SYSDATE), -1) 
+3

Je préfère 'creation_date <= TRUNC (SYSDATE) - intervalle '1' month' :) –

+3

@be ici maintenant: c'est bien , aussi longtemps que cela ne vous dérange pas si elle échoue avec ORA-01839 "date non valable pour le mois spécifié" dans certains cas, par exemple si creation_date est le 31 mars. –

+1

hm, j'ai toujours cru que l'expression 'interval' était conçue pour gérer ces situations correctement ... –

Questions connexes