Précédent   Forum des professionnels en informatique > Bases de données > MySQL > Requêtes
Requêtes Forum d'entraide sur les requêtes 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 14/02/2011, 20h58   #1
Membre habitué
 
Inscription : mai 2004
Messages : 499
Détails du profil
Informations forums :
Inscription : mai 2004
Messages : 499
Points : 149
Points : 149
Par défaut date_sub() mal caculé?

Bonjour,

Je suis maintenant confronté au problème suivant : dans une requête, je veux ramener les suivis dont la date de rappel est celle du jour et dont l'heure est indéterminée ou inférieure à l'heure courante moins 15 minutes.

Voici donc ma requête :
Code :
1
2
3
4
5
6
7
8
9
SELECT cibles.* FROM cibles, suivis 
WHERE refCampagne = 1 AND 
         cibles.id = refCible AND 
         (cloture = 0 OR cloture IS NULL) AND 
         rappelPrior = 1 AND 
         date(dateRappel) > date_sub(curdate(), interval 1 day) AND 
         date(dateRappel) < date_sub(now(), interval 15 minute) AND 
        (occupe = 0 OR occupe IS NULL) 
ORDER BY RAND() DESC LIMIT 1
J'ai bien tenu compte le la remarque qu'on m'avait édictée dans mon précédent post concernant l'emploi possible de BETWEEN, mais comme je travaille avec strictement plus grand et strictement plus petit, je ne peux donc pas utiliser le BETWEEN ici.

Mon problème actuel est que cette requête me ramène quand même des suivis dont la date de rappel est celle du jour mais dont l'heure de rappel est ultérieure à 15 minutes.

Voici la même requête quelque peu modifiée, et son résultat :

- requête :

Code :
1
2
3
4
5
6
7
8
SELECT * FROM suivis 
WHERE refCampagne = 1 AND 
         (cloture = 0 OR cloture IS NULL) AND 
         rappelPrior = 1 AND 
         date(dateRappel) > date_sub(curdate(), interval 1 day) AND 
         date(dateRappel) < date_sub(now(), interval 15 minute) AND 
         (occupe = 0 OR occupe IS NULL) 
ORDER BY RAND() DESC


- quelques résultats :

40763 34692 1 0 2011-02-14 10:00:00 1 0 0 2 0 2011-02-11 0
146508 91616 1 0 2011-02-14 00:00:00 1 0 0 1 0 2011-02-07 0
152130 97195 1 0 2011-02-14 11:00:00 1 0 0 0 0 2011-02-11 0
138992 84100 1 0 2011-02-14 23:00:00 1 0 0 1 0 2011-02-14 0
86134 63006 1 0 2011-02-14 10:00:00 1 0 0 0 0 2011-02-11 0
86130 63002 1 0 2011-02-14 23:00:00 1 0 0 0 0 2011-02-14 0
87929 64801 1 0 2011-02-14 00:00:00 1 0 0 1 0 2010-12-13 0

On remarque que les enregistrements 138992 et 86130 ont une heure de rappel à 23h pour ce jour (14/02/2011) alors qu'il est 20h53.

Si quelqu'un à une idée, merci d'avance pour l'aide.
dubitoph est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/02/2011, 10h58   #2
Modérateur
 
Avatar de CinePhil
 
Homme Philippe Leménager
Ingénieur d'études en informatique
Inscription : août 2006
Messages : 10 990
Détails du profil
Informations personnelles :
Nom : Homme Philippe Leménager
Âge : 48
Localisation : France, Haute Garonne (Midi Pyrénées)

Informations professionnelles :
Activité : Ingénieur d'études en informatique
Secteur : Enseignement

Informations forums :
Inscription : août 2006
Messages : 10 990
Points : 18 240
Points : 18 240
Envoyer un message via MSN à CinePhil
Citation:
je veux ramener les suivis dont la date de rappel est celle du jour et dont l'heure est indéterminée ou inférieure à l'heure courante moins 15 minutes.
De quel type est la colonne dateRappel ?

Que veux-tu dire par "indéterminée" ? La colonne est à NULL ? La colonne a seulement la partie heure à zéro ?
__________________
Philippe Leménager. Ingénieur d'étude à l'École Nationale de Formation Agronomique.
Mon blog sur la conception des BDD, le langage SQL, le PHP avec Zend Framework...
« Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
À la maison comme au bureau, j'utilise Mandriva Linux ou Mageïa ! Soutenons l'industrie logicielle française !
Linuxiens, comptez-vous !
CinePhil est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 10h44.


 
 
 
 
Partenaires

Hébergement Web