[MySQL 5] Problème requete avec du time [Résolu]

Bonjour tlm,

SELECT cast(logaccess.horodate as time) FROM logaccess  WHERE logaccess.idbadge=4 AND logaccess.horodate='2006-02-13' BETWEEN '12:00:00' AND '12:59:00'

Dans un attribut horodate du type timestamp : j’ai une date + un horaire…jusque la normal.
Je choisi de selectionner un horaire qui se trouve entre 12H et 12H59… mais avec cette requete ca marche pas

pourtant pour un idbadge = 4 pour la date du 13/02/2006 j’ai bien un 12H30…dans horodate ‘2006-02-13 12:30:00’

Si quelqu’un a une idée ?

D’après moi c’est ici que ça cloche.

Mais je n’en suis pas sûr… Ha mon avis ce deux champs sont des chaînes de caractères et c’est la ou ça bloque.

Si tu enlèves le "BETWEEN" ça marche? Tu vois bien ton enregistrement avec un IDBadge à 4?

SQL
WHERE logaccess.idbadge=4 AND logaccess.horodate='2006-02-13' BETWEEN '12:00:00' AND '12:59:00'

Je te fais l’analyse syntaxique en prenant le prédicat BETWEEN a la même priorité que ‘=’.

SQL
(logaccess.horodate='2006-02-13') BETWEEN '12:00:00' AND '12:59:00'

En gros? il évalue l’égalité, puis regarde si c’est entre 12h et 13h.

Pour ton problème essaye plutôt ça :

SQL
WHERE logaccess.idbadge=4 AND logaccess.horodate='2006-02-13' AND TIME(logaccess.horodate) BETWEEN '12:00:00' AND '12:59:00'

Je te laisse farfouiller les fonctions dates de mySQL car je doute que TIME renvoie le temps (heure, minute, secondes) associées à un champ DATETIME.

SELECT cast(logaccess.horodate as time) FROM logaccess  WHERE logaccess.idbadge=4 AND cast(logaccess.horodate as DATE)='2006-02-13' AND TIME(logaccess.horodate) BETWEEN '12:00:00' AND '12:59:00'

Merci avec cette solution ca marche…maintenant je vais intégrer cette requete dans une fonction… :jap: en tout cas merci à vous deux

bref :slight_smile: n’oublie jamais la priorité des opérateurs.