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 20/09/2011, 11h32   #1
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
Par défaut Requete WHERE date= ?

Bonjour à tous,

J'utilise un fichier php qui me genere une page XML, et c'est avec cette page que je genère un graphique amCharts.
La base de données est remplie dynamiquement avec les données d'un capteur météo (température).

Ma requete MySQL qui extrait les datas est la suivante :
Code :
1
2
 
$Query = "SELECT timestamp_mesure, valeur_mesure WHERE id_capteur='2' ORDER BY timestamp_mesure DESC LIMIT 300";
Or dans ma table, la valeur timestamp_mesure est au format 20110920110000, et une valeur est enregistré à chaque changement de température.
C'est à dire que si la température reste constante pendant 2h, je n'aurais pas de nouvelles valeurs pendant 2h.

Je souhaiterai dans ma requete :
- enlever le LIMIT 300, puis
- rajouter une condition WHERE, qui me sélectionne uniquement les lignes ou timestamp_mesure est compris entre 00:00 et 23:59 pour le jour actuel.


J'aurai besoin de votre aide pour cette condition, car je ne sais pas comment l'ecrire. Je sais faire des requetes simple, mais là je ne vois pas trop.

Mikael
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 12h02   #2
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Saluton,
je verrais bien un truc du genre
Code MYSQL :
1
2
3
WHERE timestamp_mesure BETWEEN CONCAT(DATE_FORMAT(CURDATE(),"%Y%m%d"),"000000")
AND
CONCAT(DATE_FORMAT(CURDATE(),"%Y%m%d"),"230000")
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 12h31   #3
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
Merci Maljuna Kris,
ça fonctionne parfaitement.

Et si je veux la même chose pour la journée précédente, je peux faire CURDATE()-1 :
Code :
1
2
3
4
 
WHERE timestamp_mesure BETWEEN CONCAT(DATE_FORMAT(CURDATE()-1,"%Y%m%d"),"000000")
AND
CONCAT(DATE_FORMAT(CURDATE()-1,"%Y%m%d"),"230000")
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 12h48   #4
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Citation:
Envoyé par mikael2235 Voir le message
Merci Maljuna Kris,
ça fonctionne parfaitement.

Et si je veux la même chose pour la journée précédente, je peux faire CURDATE()-1 :
Non il faut utiliser DATE_ADD(CURDATE(),INTERVAL +1 DAY)
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 14h52   #5
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
J'ai essayer avec ta syntaxe et en mettant
Code :
1
2
 
DATE_ADD(CURDATE(),INTERVAL -1 DAY)
J'ai le même résultat qu'avant. mais je pense qu'il y a un problème. Je vais faire un echo pour vérifier les datas.
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 20/09/2011, 20h21   #6
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
Bon la requête fonctionne bien, et me sélectionne les valeurs de 00:00 à 23:59.

Est-il possible de faire une requête sur 24h glissantes ?

Merci.
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 05h49   #7
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Tu veux dire 12:00 avant NOW() ou 12:00 après ?
Il faut essayer, DATEADD() supporte les arguments de type DATETIME et INTERVAL le type HOUR_MINUTE
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 08h32   #8
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
Salut,

Alors quand je dis 24h glissante, c'est en fait de NOW()-24H à NOW()
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 08h58   #9
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Citation:
Envoyé par mikael2235 Voir le message
Salut,

Alors quand je dis 24h glissante, c'est en fait de NOW()-24H à NOW()
Hé bien, je crois que tu t'es répondu tout seul.
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 09h45   #10
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
J'ai essayé ceci :
Code :
1
2
 
BETWEEN DATETIME(NOW(),INTERVAL -24 HOUR) AND DATETIME(NOW())
Mais ça ne fonctionne pas, j'ai regardé la fonction DATETIME, je ne pense pas avoir fait d'erreur de syntaxe. ou alors c'est le format de la date
mikael2235 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 09h53   #11
Expert Confirmé
 
Avatar de Maljuna Kris
 
Homme Avcxjo MoKo
Retraité
Inscription : novembre 2005
Messages : 2 530
Détails du profil
Informations personnelles :
Nom : Homme Avcxjo MoKo
Âge : 60

Informations professionnelles :
Activité : Retraité
Secteur : Administration - Collectivité locale

Informations forums :
Inscription : novembre 2005
Messages : 2 530
Points : 3 523
Points : 3 523
Citation:
Envoyé par mikael2235 Voir le message
Code :
1
2
 
BETWEEN DATE_ADD(NOW(),INTERVAL -24 HOUR) AND NOW()
Ça devrait aller mieux comme ça, non ?
__________________
Kie lumo eksistas ankaŭ ombro troviĝas. L.L. Zamenhof
articles : Comment émuler un tableau croisé [quasi] dynamique
et : Une énigme mathématique résolue avec MySQL
recommande l'utilisation de PDO (PHP5 Data Objects)
Maljuna Kris est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 21/09/2011, 11h18   #12
Membre du Club
 
Inscription : février 2009
Messages : 330
Détails du profil
Informations forums :
Inscription : février 2009
Messages : 330
Points : 56
Points : 56
C'est bon avec DATE_ADD, ça fonctionne bien !

Merci pour ton aide.
mikael2235 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 03h32.


 
 
 
 
Partenaires

Hébergement Web