Classer une string

Résolu/Fermé
marwan-poste Messages postés 40 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 22 décembre 2015 - 26 mai 2015 à 23:34
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 - 27 mai 2015 à 09:36
Bonjour,

J'ai une String qui contient ce type de données
Exp
8H 00
8H 30
9H 00
10H 00


select * from my_table where heure between 8 and 14 AND date ="2015-05-15" ORDER BY (CONVERT(SUBSTRING_INDEX(heure,'H',1),UNSIGNED INTEGER) );

mais la résulta est sous forme:
8H 30
8H 00
9H 00
10H 00

2 réponses

jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
27 mai 2015 à 00:12
Bonjour,
Si tu stockes des HEURES dans ta BDD .. utilises un champ (exprès fait pour....) => TIME et non du varchar...
Cela te facilitera grandement tes requêtes......et l'utilisation de tes données.



1
marwan-poste Messages postés 40 Date d'inscription samedi 20 octobre 2007 Statut Membre Dernière intervention 22 décembre 2015
27 mai 2015 à 09:29
Bonjour,

En effet, j'ai trop de données.Je peux pas modifier la DB.


ORDER BY (TIME_FORMAT(CONCAT(substring_index(heure,'H ',1), ':', substring_index(heure,'H ',-1) ), '%H:%i')) asc;
0
jordane45 Messages postés 38145 Date d'inscription mercredi 22 octobre 2003 Statut Modérateur Dernière intervention 25 avril 2024 4 650
27 mai 2015 à 09:36
A la limite .. vu que tu as deux champs .. (heures et minutes...)
tu fais juste un order by sur l'heure puis les minutes... pas besoin de concat. (le concat te serviras à affcher éventuellement...)

select   CONCAT(T.heure, "H",T.minutes) as HeurMin 
           , T.*
FROM my_table  T
WHERE heure between 8 and 14 
AND date ="2015-05-15" 
ORDER BY heure,minutes

0