Classer une string

Résolu
marwan-poste Messages postés 55 Statut Membre -  
jordane45 Messages postés 40050 Statut Modérateur -
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 40050 Statut Modérateur 4 756
 
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 55 Statut Membre
 
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 40050 Statut Modérateur 4 756
 
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