Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 08/03/2006, 11h09   #1
Expert Confirmé
 
Avatar de titoumimi
 
Inscription : décembre 2003
Messages : 3 717
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : décembre 2003
Messages : 3 717
Points : 3 082
Points : 3 082
Par défaut Rechercher les documents des 7 derniers jours...

Bonjour à tous.

J'ai une table "demandes_docs", contenant une date de téléchargement (date_dl) et un id du doc téléchargé (id_doc).

Je cherche à extraire tout les documents ayant été téléchargés ces sept derniers jours :

Code :
SELECT * FROM DEMANDES_DOCS WHERE dateDiff("dd",date_dl,getdate())<7 ORDER BY date_dl DESC, id_doc
Problème, message d'erreur suivant :
Citation:
Wrong query : Erreur de syntaxe près de 'getdate())<7 ORDER BY date_dl DESC, id_doc' à la ligne 1
J'ai beau me creuser la tête, je sèche complètement

Si vous avez des idées, toutes seront les bienvenues

Merci d'avance
titoumimi est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 14h28   #2
Membre à l'essai
 
Inscription : mars 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 30
Points : 20
Points : 20
Utiliser limit?

Code :
1
2
 
SELECT * FROM DEMANDES_DOCS  ORDER BY date_dl DESC, id_doc LIMIT 7
kilanepa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 15h23   #3
Rédacteur
 
Avatar de pcaboche
 
Homme Pierre Caboche
Inscription : octobre 2005
Messages : 2 195
Détails du profil
Informations personnelles :
Nom : Homme Pierre Caboche
Âge : 32
Localisation : Singapour

Informations forums :
Inscription : octobre 2005
Messages : 2 195
Points : 4 717
Points : 4 717
Par défaut Re: Rechercher les documents des 7 derniers jours...

Code :
1
2
3
4
5
6
7
SELECT *
FROM DEMANDES_DOCS
 
WHERE 
  date_dl BETWEEN DATE_SUB(CURDATE(), INTERVAL 7 DAY) AND CURDATE()
 
ORDER BY date_dl DESC, id_doc
(j'ai supprimé le DATEDIFF, vu qu'il ne marche pas avec toutes les versions)

Tout sur les fonctions de date:
http://pcaboche.developpez.com/artic...ns_date_heure/
pcaboche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 16h33   #4
Membre à l'essai
 
Inscription : mars 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 30
Points : 20
Points : 20
Une petite question come ca en passant. N est il pas mieux d utiliser les TIMESTAMP quand on doit travailler sur les date?
kilanepa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/03/2006, 17h29   #5
Rédacteur
 
Avatar de pcaboche
 
Homme Pierre Caboche
Inscription : octobre 2005
Messages : 2 195
Détails du profil
Informations personnelles :
Nom : Homme Pierre Caboche
Âge : 32
Localisation : Singapour

Informations forums :
Inscription : octobre 2005
Messages : 2 195
Points : 4 717
Points : 4 717
Citation:
Envoyé par kilanepa
Une petite question come ca en passant. N est il pas mieux d utiliser les TIMESTAMP quand on doit travailler sur les date?

La réponse dans la doc:

Citation:
Envoyé par Doc MySQL
Remember that although DATETIME, DATE, and TIMESTAMP values all can be specified using the same set of formats, the types do not all have the same range of values. For example, TIMESTAMP values cannot be earlier than 1970 or later than 2037. This means that a date such as '1968-01-01', while legal as a DATETIME or DATE value, is not valid as a TIMESTAMP value and is converted to 0.
Avec un TIMESTAMP, tu risques d'avoir un "bug de l'an 2037"

Avec un DATETIME, tu peux aller au-delà (au moins jusqu'en 2069, il faudrait que je vérifie)
pcaboche est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2006, 10h06   #6
Membre à l'essai
 
Inscription : mars 2006
Messages : 30
Détails du profil
Informations forums :
Inscription : mars 2006
Messages : 30
Points : 20
Points : 20
ah ok . merci =) . J espere quand meme qu en l an 2037. on aura passé a Mysql 17.3 qui prend en charge les timestamp plus grand.

Je prefere quand meme les timestamp pour pouvoir utiliser les requete "ON UPDATE CURRENT TIMESTAMP" pour les news 8)
kilanepa est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 09/03/2006, 16h29   #7
Rédacteur
 
Avatar de pcaboche
 
Homme Pierre Caboche
Inscription : octobre 2005
Messages : 2 195
Détails du profil
Informations personnelles :
Nom : Homme Pierre Caboche
Âge : 32
Localisation : Singapour

Informations forums :
Inscription : octobre 2005
Messages : 2 195
Points : 4 717
Points : 4 717
Citation:
Envoyé par kilanepa
ah ok . merci =) . J espere quand meme qu en l an 2037. on aura passé a Mysql 17.3 qui prend en charge les timestamp plus grand.
Oh oui, bien sûr. En 2037, on n'aura plus des architectures 32 ou 64 bits comme à l'heure actiuelle, mais peut-être bien des architectures 256 ou 512 capable de gérer de très grands nombres ou des flottants avec une très grande précision...

A cette époque MySQL sera peut-être largement dépassé par un autre SGBD encore plus performant et complètement gratuit. Dieu seul sait ce qui nous attend dans une 30aine d'années !

Ah, si... les astronomes prévoient qu'en 2036 un gros astéroïde viendra froler la Terre, avec un risque de collision non négligeable et donc d'éradication de toute forme de vie. Sachant cela, on se demande bien pourquoi on est obligé de cotiser pour sa retraite...
pcaboche est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h35.


 
 
 
 
Partenaires

Hébergement Web