web-dev-qa-db-fra.com

Requête SQL pour récupérer les données des 30 derniers jours?

Salut, je suis nouveau à Oracle. Comment puis-je faire une simple déclaration, par exemple obtenir un identifiant de produit des 30 ou 20 derniers jours d'achat?

SELECT productid FROM product
WHERE purchase_date ? 
28
miracle
SELECT productid FROM product WHERE purchase_date > sysdate-30
55
jgrabowski

Le moyen le plus simple serait de spécifier

SÉLECTIONNER le produit à partir du produit où date_achat> sysdate-30;

Rappelez-vous que la date sysdate ci-dessus a la composante heure, il s'agira donc de commandes plus récentes que le 03-06-2011, 08:54 AM, en fonction de l'heure actuelle. 

Si vous souhaitez supprimer le délai lors de la comparaison ..

SELECT productid FROM product where purchase_date > trunc(sysdate-30);

Et (en fonction de vos commentaires), si vous souhaitez spécifier une date particulière, assurez-vous d’utiliser to_date et de ne pas vous fier aux paramètres de session par défaut.

SÉLECTIONNER le produit à partir du produit où date_achat> to_date ('03/06/2011 ',' mm/jj/aaaa ')

Et en ce qui concerne le commentaire entre (sysdate-30) - (sysdate), pour les commandes, vous devriez être d'accord avec la condition de sysdate à moins que vous ne puissiez avoir des commandes avec order_dates à l'avenir. 

12
Rajesh Chamarthi

Faites attention à un aspect en faisant "Purchase_date> (sysdate-30)": "sysdate" est la date actuelle, heure, minute et seconde. Donc, "sysdate-30" n'est pas exactement "il y a 30 jours", mais "il y a 30 jours à cette heure exacte".

Si vos dates d'achat sont à 00.00.00 en heures, minutes, secondes, nous ferons mieux:

where trunc(purchase_date)>trunc(sysdate-30)

(cela ne prend pas des heures, des minutes et des secondes en compte).

7
SELECT COUNT(job_id) FROM jobs WHERE posted_date < NOW()-30;

Now() renvoie la date et l'heure actuelles.

1
sinethr

Essayez ceci: En utilisant ceci, vous pouvez sélectionner des données des 30 derniers jours.

SELECT
    *
FROM
    product
WHERE
    purchase_date > DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
1
Faisal