Enregistrer TIME en Mysql

Résolu/Fermé
driftman123 Messages postés 15 Date d'inscription vendredi 23 mars 2012 Statut Membre Dernière intervention 31 mai 2014 - 31 mai 2014 à 19:40
driftman123 Messages postés 15 Date d'inscription vendredi 23 mars 2012 Statut Membre Dernière intervention 31 mai 2014 - 31 mai 2014 à 22:01
Bonsoir je voulais vous consulter pour un truc je suis entrain de creer une application de pointage en java ou on doit entrer dans une base de donnée la date actuelle du pointage mais mon seul probleme c'est que je dois entrer lheureEntreeMatin et heureSortieMatin en HH:mm:ss et ensuite verifier la difference avec 08:00:00 pour deduire le retard en minute
par exemple EntreeMatin : 08:12:00
Sortie 12:05:00
08:12:00 - 08:00:00 = 12 min
je voulais juste savoir comment enregistrer un champs type TIME qui est tapé en type String dans mysql

1 réponse

KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
31 mai 2014 à 20:09
Bonjour,

Pourquoi utiliser un type String dans MySql ? Le type TIME existe et il est plus pratique puisqu'il permet de faire des requêtes sur ce champ sans avoir à parser ta chaîne de caractères HH:mm:ss. En plus celle-ci va prendre 8 caractères, donc 9 octets, alors que le champ TIME ne prendra que 3 octets. Sans oublier que la conversion d'un champ TIME vers le type Date de Java est naturelle.

Bref, sur tous les critères il est préférable d'utiliser un type TIME, pas un VARCHAR.
-1
driftman123 Messages postés 15 Date d'inscription vendredi 23 mars 2012 Statut Membre Dernière intervention 31 mai 2014
31 mai 2014 à 21:19
Mon seul problème c'est que je doit récupérer les heures d'un champs texte et ensuite les enregistrer dans une base de donnée y a t-il une solution pour cela ?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
31 mai 2014 à 21:25
Quand tu lis ton champs texte, tu le transforme en date Java et c'est cette date que tu enregistres dans la base de données, enregistrer le texte lu n'a pas d'intérêt, en plus ce serait un coup à lire un champ texte non valide (26h72 par exemple)
0
driftman123 Messages postés 15 Date d'inscription vendredi 23 mars 2012 Statut Membre Dernière intervention 31 mai 2014
31 mai 2014 à 21:43
Donc la solution ? parce que il faut à tout prix que l'utilisateur tape ou entre le temps d'entrée tant que l'enregistrement ne se fais pas en temps réel tu vois ?
0
KX Messages postés 16753 Date d'inscription samedi 31 mai 2008 Statut Modérateur Dernière intervention 25 novembre 2024 3 019
31 mai 2014 à 21:50
Ça y a aucun soucis, d'abord l'utilisateur entres tout ce que tu veux jusqu'à ce que le temps soit bon, ensuite quand ton String est bien au format hh:mm::ss tu le convertis :

Time t = Time.valueOf("12:34:56"); // import java.sql.Time

Ensuite pour ta requête en base de données, tu fait un setTime tout simplement :

PreparedStatement stmt = ...
stmt.setTime(1, t);

Regarde la documentation :
Time.valueOf(String)
PreparedStatement.setTime(int, Time)
0
driftman123 Messages postés 15 Date d'inscription vendredi 23 mars 2012 Statut Membre Dernière intervention 31 mai 2014
31 mai 2014 à 22:01
Merci beaucoup mon frère tu m'as énormément aidé et je t'en très reconnaissant :D
0