Enregistrer TIME en Mysql

Résolu
driftman123 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -  
driftman123 Messages postés 15 Date d'inscription   Statut Membre Dernière intervention   -
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
A voir également:

1 réponse

KX Messages postés 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
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   Statut Membre Dernière intervention  
 
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 16761 Date d'inscription   Statut Modérateur Dernière intervention   3 020
 
Ç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   Statut Membre Dernière intervention  
 
Merci beaucoup mon frère tu m'as énormément aidé et je t'en très reconnaissant :D
0