[HS] MySQL : manipulation arithmétique sur des "time"

Pàgina inicial

Reply to this message
Autor: Patrice Karatchentzeff
Data:  
A: GUILDE
Assumptes nous: Re: [HS] MySQL : manipulation arithmétique su r des "time"
Assumpte: [HS] MySQL : manipulation arithmétique sur des "time"
Salut,

J'ai une question à deux balles : j'avais cru comprendre que l'on
pouvait _manipuler_ des heures (format hh:mm:ss) facilement sous MySQL
(je sais bien le faire en Perl...). Un exemple :

mysql> describe vehicules2;
+-------------+------------+------+-----+---------+-------+
| Field       | Type       | Null | Key | Default | Extra |

+-------------+------------+------+-----+---------+-------+
| nom         | varchar(8) | YES  |     | NULL    |       |
| sortie_id   | varchar(4) | YES  |     | NULL    |       |
| heure_debut | time       | YES  |     | NULL    |       |
| heure_fin   | time       | YES  |     | NULL    |       |
| temps       | time       | YES  |     | NULL    |       |

+-------------+------------+------+-----+---------+-------+
5 rows in set (0.00 sec)

mysql> select * from vehicules2;
+-------+-----------+-------------+-----------+----------+
| nom   | sortie_id | heure_debut | heure_fin | temps    |

+-------+-----------+-------------+-----------+----------+
| VSAB  | 1         | 16:34:00    | 19:00:00  | 02:26:00 |
| VLHR  | 1         | 16:34:00    | 19:00:00  | 02:26:00 |
| VSAB  | 2         | 10:46:00    | 13:33:00  | 02:47:00 |
| VSAB  | 3         | 19:46:00    | 20:47:00  | 01:01:00 |
| VTUHR | 4         | 15:17:00    | 16:01:00  | 00:44:00 |

+-------+-----------+-------------+-----------+----------+
5 rows in set (0.00 sec)

mysql> select vehicules2.nom, (vehicules2.heure_fin - vehicules2.heure_debut) from vehicules2 where vehicules2.nom = "VSAB" group by vehicules2.nom;
+------+-------------------------------------------------+
| nom | (vehicules2.heure_fin - vehicules2.heure_debut) |

+------+-------------------------------------------------+
| VSAB |                                           26600 |

+------+-------------------------------------------------+
1 row in set (0.00 sec)

Bon, c'est comme cela que calcule MySQL ou c'est moi qui me gourre (vu
que je débute en SQL...) ? parce que faire des opérations
arithmétiques sur chaque partie sans faire les modulos, ce n'est pas
terrible ;-)... en tout cas, pas l'idée que je me fais de savoir
manipuler des heures (cf. le super module Date de Perl). C'est pareil
avec sum() aussi... (tant qu'à faire...).

Une idée ?

Merci d'avance,

PK

PS : pour les chatouilleux pointilleux, le dernier champs de la table
fait *volontairement* doublon (violant ainsi l'unicité des données
dans une table)... C'est le temps de la manip (et cela restera de
toute façon si MySQL continue à calculer ainsi...).

--
      |\      _,,,---,,_       Patrice KARATCHENTZEFF
ZZZzz /,`.-'`'    -.  ;-;;,_   mailto:p.karatchentzeff@free.fr
     |,4-  ) )-,_. ,\ (  `'-'  http://p.karatchentzeff.free.fr
    '---''(_/--'  `-'\_)