Page 1 sur 1

TIME() limite 839:59:59

Posté : 05 déc. 2012, 22:08
par dunbar
Bonjour,

Je bute sur un soucis MYSQL impose une limite au champ TIME() mon soucis est que j'ai un champs qui contient plus de 839 heures et il ne me retourne pas le compte exact existe t'il un moyen de passer outre cette limite ?

Merci

Re: TIME() limite 839:59:59

Posté : 06 déc. 2012, 16:44
par ouckileou
Changer de type ?

Re: TIME() limite 839:59:59

Posté : 06 déc. 2012, 16:59
par dunbar
Salut

Oui j'ai essayer en TIMESTAMP mais le soucis reste le même

Re: TIME() limite 839:59:59

Posté : 06 déc. 2012, 17:12
par xTG
Le type TIMESTAMP est lié au type DATETIME dans MySQL.
Donc l'intervalle est la suivante :
L'intervalle de validité va de ‘1000-01-01 00:00:00’ à ‘9999-12-31 23:59:59’
Tu ne devrai donc pas avoir de souci à faire rentrer ce que tu veux dedans.
Le souci vient peut être du fait que du coup toi tu rentres du 0-01-01 + 839heures alors qu'il faudrait du 1000-01-01 + 839heures pour qu'il le prenne correctement ?

Re: TIME() limite 839:59:59

Posté : 06 déc. 2012, 17:24
par dunbar
Salut,

Ce que je souhaite faire est la chose suivante.
J'ai une table avec qui reprend différents champs donc un champ durée elle vont de 01:00:00 à 08:00:00 et un champ job (il y a plusieurs centaines d'utilisateurs) et un champ date_job 2012-11-01 (champ date) le but est de créer des statistiques par job et et mois donc je me retrouve très avec plus de 840 heures par mois et par jobs, et avec cette limite il stop le calcul a 839:59:59 et ne prend pas le reste en compte.
Et bien sûr mes stats ne sont pas juste.

NB: pour info voici ma requête :
'SELECT
     YEAR(date_debut) AS annee,
     MONTHNAME(date_debut) AS mois,
     SEC_TO_TIME(SUM(TIME_TO_SEC(ft.job_delai))) AS total,
 
                    ROUND(SEC_TO_TIME(SUM(TIME_TO_SEC(ft.job_delai))) / 
                   (SELECT SEC_TO_TIME(SUM(TIME_TO_SEC(job_delai)))      FROM '.self::DEFAULT_SQL_TB.', zone AS zn  WHERE zn.nom IN ('.$this->pdo_zone.') AND zn.id = id_zone AND MONTH(date_debut) = MONTH(ft.date_debut) AND YEAR(date_debut) = :yr  AND jo.id = ft.id_job )* 100, 2) AS pourcentage
                                                             

      FROM '.self::DEFAULT_SQL_TB.' AS ft, jobs AS jo, zone AS zn
        WHERE zn.nom IN ('.$this->pdo_zone.')
            AND zn.id = ft.id_zone
           AND MONTH(ft.date_debut) = :mt
           AND YEAR(ft.date_debut) = :yr
           AND jo.id = ft.id_job
          GROUP BY  id_job 
Mais j'ai peut-être louper un truc

Re: [RESOLU] TIME() limite 839:59:59

Posté : 07 déc. 2012, 10:59
par dunbar
Salut,

La solution trouver est de faire le calcul en seconde ou la il ne semble pas y avoir de limite :).