Requête MYSQL avec Where un peu complexe - SQL/NoSQL - Programmation
Marsh Posté le 30-12-2013 à 20:44:30
Pourquoi OR?
Il faut que je récupère toutes les données entre le 29/12/2013 à partir de 16h jusqu'au 30/12/2013 jusqu'a 16h.
Marsh Posté le 30-12-2013 à 21:39:48
hppp a écrit : Salut à tous,
|
Sérieusement ? Date et heure dans deux champs séparés ?
Si le schéma n'est pas définitif, passer à du datetime ne ferait pas de mal et permettrait un simple SELECT * FROM temperature WHERE date_mesure BETWEEN '2002-12-29 16:00:00' AND '2002-12-30 16:00:00' voire pour faire sa feignasse SELECT * FROM temperature WHERE date_mesure BETWEEN NOW() - INTERVAL 24 HOUR AND NOW()
Marsh Posté le 30-12-2013 à 21:44:17
Volkhen a écrit : |
Oui j'y avais pensé, je crois que je vais voir pour mettre la date et l'heure dans le même champs.
Merci
Marsh Posté le 02-01-2014 à 13:50:43
c'est vrai une zone timestamp(ou datetime) serait le plus cool ... mais bon, tu ne dois pas l'avoir si tu demandes ça ...
sinon
1.SELECT * FROM temperature WHERE
(date='29/12/2' AND heure >= '16:00:00') // tu selectionnes les enregistrements du 29 après 16h
or
(date='30/12/2' AND heure <= '16:00:00') // tu sélectionnes les enregistrements du 30 avant 16h
Pour la valeur de ta date , tu peux mettre now() and now() -1 day, au cas où
Tu as aussi la possibilité de faire un union entre tes 2 requêtes... ce qui peut être pas mal... mais pas des plus performants (à exécuter, ni à maintenir)
SELECT * FROM temperature WHERE date='29/12/2' AND heure >= '16:00:00'
union
SELECT * FROM temperature WHERE date='30/12/2' AND heure <= '16:00:00' ;
Marsh Posté le 02-01-2014 à 14:49:08
+1 pour un champ unique de type timestamp pour avoir la date et heure et +1 pour BETWEEN.
Par ailleurs, la fonction DATE_FORMAT() pourra t'aider en cas de besoin de traiter uniquement avec la partie date ou la partie heure
Marsh Posté le 30-01-2014 à 14:50:57
Salut.
Et pourquoi pas avec un DESC sur le champ date?
Les dernières 24h correspondent aux (24 x 12*) derniers enregistrements.
(*12 enregistrement par heure: 12h00, 12h05, 12h10, ..., 12h55)
On aurait donc:
SELECT * FROM TEMPERATURE ORDER BY DATE DESC LIMIT 0, 264;
Mais je dis peut être une connerie si tu recherches pas les dernières 24 heures "glissantes".
Marsh Posté le 30-12-2013 à 19:26:05
Salut à tous,
Je suis en train de me casser la tête sur une requête SQL. J'ai une table avec des température tt les 5min et avec l'heure et la date dedans.
Je voudrais récupérer les dernier 24h uniquement dans ma requête.
Je suis arrivé à faire 2 requettes qui font se que je veux faire au final mais je voulais savoir si il n'etait pas possible de faire la même chose en une?
Merci de votre aide.