IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Java Discussion :

Problème Time supérieur à 24:00:00


Sujet :

Java

  1. #1
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Problème Time supérieur à 24:00:00
    Bonjour à tous et à toutes.
    J'ai au problème de Time que je ne comprend pas trop. En effet je calcul la différence entre deux heure via une requet, quand celle ci est calculé dans mysql, le total affiche bien même s'il est supérieur à 24 alors que java lui ne semble pas vouloir l'accépter.
    voiçi le code qui sera peux étre plus parlant :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
     
    public static String getTotalHeure(String DDeb, String DFin)
    	{
    		Statement traitPrincipal;
    		ResultSet res= null;
    		String resString ="";
    		try
    		{
    			cnt = MySqlConnection.getConnection("****","****","");
     
    			traitPrincipal = cnt.createStatement();	
    			res = traitPrincipal.executeQuery("SELECT SEC_TO_TIME(sum( TIME_TO_SEC( TIMEDIFF( HEUREDEPART, HEUREARRIVEE ) ) ) ) AS res"+
    					" FROM presence WHERE DATEJOUR BETWEEN '"+DDeb+"' AND '"+DFin+"'");
     
    			res.next();
     
    			resString=res.getString("RES");
     
    			res.close();
    			traitPrincipal.close();
    			cnt.close();
     
    		}
    		catch (Exception e)
    		{
    			JOptionPane.showMessageDialog(null,"Problème d'accès aux données 1  "+e.getMessage());
    		}
     
    		return(resString);
    	}

  2. #2
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    et tu as quoi à la place?

  3. #3
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    et bien quand le résultat est inférieur à 24:00:00 tout vas bien sinon j'ai droit à un message d'erreur java disant que Time sql contient un mauvais format par exemple 31:30:00
    or moi je veux l'afficher

  4. #4
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Fait un rs.getTime plutot qu'un rs.getString si tu récupère des time. Aussi, tes paramètres de requete, utilise un PreparedStatement et des setDate pour éviter les surprises dépendant de la locale et la tmezone négociée entre le serveur mysql et java

  5. #5
    Candidat au Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Janvier 2013
    Messages : 4
    Points : 4
    Points
    4
    Par défaut
    C'est bon j'ai trouvé une solution , je te remercie de ta réponse, j'ai tenter ta solution, mais je n'ai pas trop compris comment fonctionné le PreparedStatement.

    Du coup j'indique la solution que j'ai trouvé au cas ou certains auraient le m^me problème.Je retourne de mes requêtes les seconde et non un format hh:mm et je traite à l'aide d'une fonction dans mon code java pour obtenir le résultat en format hh:mm

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
    //Fonction qui transforme le total seconde en forma hh:mm
    public static String secToTime(String seconds) 
    	{	
    		long hrs = Long.parseLong(seconds);
    		long sec = hrs % 60;
    		hrs = hrs - sec;
    		hrs = hrs / 60;
    		long min = hrs % 60;
    		hrs = hrs - min;
    		hrs = hrs / 60;
     
    		// Format the duration as hh:mm:ss
    		DecimalFormat oMask = new DecimalFormat("00");
    		return (oMask.format(hrs) + ":" + oMask.format(min) + ":" + oMask.format(sec));
    	}
     
    	public static String getTotalHeure(String DDeb, String DFin)
    	{
    		Statement traitPrincipal;
    		PreparedStatement ps;
    		ResultSet res= null;
    		String resString ="";
    		try
    		{
    			cnt = MySqlConnection.getConnection("foyer","root","");
     
    			traitPrincipal = cnt.createStatement();	
    			res = traitPrincipal.executeQuery("SELECT sum( TIME_TO_SEC( TIMEDIFF( HEUREDEPART, HEUREARRIVEE ) ) ) AS res"+
    					" FROM presence WHERE DATEJOUR BETWEEN '"+DDeb+"' AND '"+DFin+"'");
     
    			res.next();
     
    			resString=secToTime(res.getString("RES"));
     
    			res.close();
    			traitPrincipal.close();
    			cnt.close();
     
    		}
    		catch (Exception e)
    		{
    			JOptionPane.showMessageDialog(null,"Problème d'accès aux données 1  "+e.getMessage());
    		}
     
    		return(resString);
    	}

  6. #6
    Expert éminent sénior
    Avatar de tchize_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Avril 2007
    Messages
    25 481
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 44
    Localisation : Belgique

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Avril 2007
    Messages : 25 481
    Points : 48 806
    Points
    48 806
    Par défaut
    Citation Envoyé par mguidez Voir le message
    C'est bon j'ai trouvé une solution , je te remercie de ta réponse, j'ai tenter ta solution, mais je n'ai pas trop compris comment fonctionné le PreparedStatement.


    http://java.developpez.com/faq/jdbc/...paredStatement


    Et il vaudrait mieux comprendre si tu ne veux pas créer des applications bourées d'injections SQL dans le futur

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Réponses: 2
    Dernier message: 27/05/2009, 10h33
  2. [Daqmx] Problème timing
    Par zinzaf dans le forum LabVIEW
    Réponses: 1
    Dernier message: 15/06/2008, 11h53
  3. problème Time
    Par jocelyn54 dans le forum C
    Réponses: 16
    Dernier message: 16/01/2008, 19h36
  4. Problème : varchar supérieur à 255
    Par seblo_scoqi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 13/02/2007, 19h27
  5. problème timing dans multithread
    Par goof_22 dans le forum C++
    Réponses: 1
    Dernier message: 30/10/2006, 15h10

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo