Peoblème de Requête C#

Signaler
Messages postés
3
Date d'inscription
dimanche 22 mars 2009
Statut
Membre
Dernière intervention
19 mai 2010
-
Messages postés
3
Date d'inscription
dimanche 22 mars 2009
Statut
Membre
Dernière intervention
19 mai 2010
-
Bonjour tous le monde,

Je vous écrie car je rencontre un problème dont je ne trouve aucune solution. Actuellement je possède une base de donnée avec une table XYZ, cette table XYZ possède 2 champs : DateDebut et DateFin. Ces deux champs sont de types Datetime !!! Dans mon code C# je fais tout d'abord une requête qui récupère la différence entre DateDebut et DateFin sous forme de seconde.
Je possède tout d'abord ces 2 fonctions :

public ArrayList TauxUtilisationSystem()
    {
        String StrReq = "SELECT DATEDIFF(Second,DateDebut,DateFin) FROM XYZ;";
        ConnexionSQL();
        SQL_Commande = SQL_Connexion.CreateCommand();
        SQL_Commande.CommandText = StrReq;
        SQL_Reader = SQL_Commande.ExecuteReader();
        while (SQL_Reader.Read())
        {
            DateFinale.Add(SQL_Reader.GetValue(0));
        }
        SQL_Reader.Close();
        DeconnexionSQL();
        return DateFinale;
    }

    public string ConvertirSeconde_Duree(int secS)
    {
        int[] time = new int[3];
        int tempS = secS%3600;
        string duree;

        time[0]=(secS-tempS)/3600;      // Heures
        time[1]=tempS%60;               // Secondes
        time[2]=(tempS-time[1])/60;     // Minutes
        duree = time[0].ToString() + ":" + time[1].ToString() + ":" + time[2].ToString();
        
        return duree;
    }


Donc voilà petit résumé de la situation. La fonction TauxUtilisationSystem() permet de calculer la différence entre DateDebut et DateFin sous forme de seconde. Ma seconde fonction ConvertirSeconde_Duree() à pour but de convertir le résultat retournée par la fonction TauxUtilisationSystem() sous forme HH:MM:SS.

Je voudrais savoir s'il est possible avec des requêtes de trouver la différence entres les 2 dates directement sous forme HH:MM:SS et non sous forme de seconde et par la suite le convertir pour trouver les HH:MM comme je le fais plus haut.

Si ce cas est impossible, alors on doit les convertirent sauf que je rencontre un problème. Ma première fonction retourne un ArrayList. Alors que pour ma 2 ième fonction j'ai besoin d'un paramètre sous forme de " int " sachant que je ne peux pas le convertir donc comment faire ?

Mon but est de trouver un moyen pour calculer la différence entre 2 dates et de l'afficher sous forme HH:MM:SS

Merci de bien vouloir m'aider, car cela fait quelques heures que je passe du temps dessus et j'ai bien l'impression que cela est impossible ...

PS: Je ne met pas mes paramètres de connexions , les intances des objets ... car tout marche bien

2 réponses

Messages postés
1860
Date d'inscription
lundi 28 novembre 2005
Statut
Modérateur
Dernière intervention
14 février 2015
48
Salut

Utilise la classe TimeSpan, qui représente un intervalle de temps. Les objets TimeSpan possèdent une propriété Hours, une propriété Minutes et une propriété Seconds.

Krimog : while (!(succeed = try())) ;
- Nous ne sommes pas des décodeurs ambulants. Le style SMS est prohibé. -
Messages postés
3
Date d'inscription
dimanche 22 mars 2009
Statut
Membre
Dernière intervention
19 mai 2010

Salut

Merci à toi Krimog pour cette information cela va m'aider. Concernant cette classe TimeSpan connais-tu des tutoriels qui utilise cette classe dans un cas similaire au mien ?

Bon je vais te l'avouer je n'ai pas rechercher sur Google pendant 2 jours mais j'ai bien dû y passer 2 ou 3 heures, mais le résultat n'est pas concluant. J'aimerai plus ou moins un modèle à l'aide d'un tutoriel sur internet ( assez complet ) ou voir même un bout de code venant de toi histoire de m'éclaircirent si possible

Je t'en remercie par avance