Vous n'êtes pas identifié(e).

#1 24/05/2011 18:11:14

unisol
Membre

convertion de temps

bonjour,
j'ai un temps en base 60 que je souhaite convertir en base 100
(afin de que je puisse multiplier le temps base 100 par un taux horaire)
j'utilise cette formule jusqu'à ce que je remarque qu'elle donne un resultat erroné (parfois  au dessus 20 ?????????)

$requete = "select sum(nombre) from intervention where numero_affaire = xxxxx ";

        $result =  pg_exec( $cnx, $requete);
        $tps_int = pg_result($result, 0); // le temps est base 60, si par exemple le resultat fait 33.05
        $min= date("i", strtotime($tps_int));
        $heure = date("H", strtotime($tps_int)); // à cette endroit le resultat est déjà faut pour des valeurs supérieures à 16 ou 20 je ne sais plus.
        $tps_int = number_format($heure + (($min*100/60)/100), 2); // ici $tps_int affiche 1 ???

merci pour votre aide

je sait que c'est peut ^ter un probleme plus PHP, mais je doit certainement me compliquer la tache
car Postgres doit peut être avoir une fonction pour cela

Hors ligne

#2 24/05/2011 18:20:45

Marc Cousin
Membre

Re : convertion de temps

Le but de la manœuvre c'est quoi ? Quel est le format initial du temps ? C'est un time ? un timestamp ?

Je présume que le but c'est de transformer 1h15 minutes en 1,25h ?


Marc.

Hors ligne

#3 24/05/2011 18:55:43

unisol
Membre

Re : convertion de temps

nombre time without time zone,

exact : transformer 1h15 minutes en 1,25h
afin de multiplier 1.25 x 49 €   // calcul temps passe x cout horaire

Hors ligne

#4 24/05/2011 21:23:22

Marc Cousin
Membre

Re : convertion de temps

Je ne vois rien de plus simple que ça pour sortir la partie décimale (exemple avec current_time)

SELECT EXTRACT (hours from current_time) + (extract (minutes from current_time) * 60 + extract (seconds from current_time))/3600;
     ?column?     
------------------
21.3516725894444


Marc.

Hors ligne

#5 25/05/2011 18:48:55

unisol
Membre

Re : convertion de temps

Merci, ça marche nickel

Hors ligne

#6 29/05/2011 10:12:01

SQLpro
Membre

Re : convertion de temps

Pourquoi ne stockez vous pas vos temps directement sous forme décimale ? Dans les applications, je stocke toujours les durées sous forme décimale avec des UDF de conversion en sexagésimale, uniquement pour l'affichage et la saisie. De ce fait il n'y a aucune erreur !

A +


Frédéric Brouard, alias SQLpro,  ARCHITECTE DE DONNÉES,  Expert langage SQL
Le site sur les SGBD relationnel et langage SQL   : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA, ISEN Toulon,  CESI Aix en Provence  * * * * *

Hors ligne

#7 29/05/2011 12:18:19

unisol
Membre

Re : convertion de temps

est ce  que dans les faits cela oblige t'il  les utilisateurs à convertir eux meme le temps en centieme ?

Hors ligne

#8 29/05/2011 12:28:48

Marc Cousin
Membre

Re : convertion de temps

Non, ça veut dire stocker un numérique au lieu d'un format temporel…

C'est un choix. Soit vous considérez que c'est un numérique, et ce sont les opérations numériques qui seront les plus faciles, et vous ferez du formatage pour afficher le temps. Soit vous considérez que c'est une date ou un time, et dans ce cas, ce sont les opérations de temps qui sont les plus faciles, et vous ferez du formatage pour les afficher en décimales.


Marc.

Hors ligne

#9 31/05/2011 15:46:13

SQLpro
Membre

Re : convertion de temps

C'est surtout aussi pour des raisons de performance... C'est beaucoup plus rapide dans les calculs sur des grosses bases.....

A +


Frédéric Brouard, alias SQLpro,  ARCHITECTE DE DONNÉES,  Expert langage SQL
Le site sur les SGBD relationnel et langage SQL   : http://sqlpro.developpez.com/
Modélisation de données, conseil, expertise, audit, optimisation, tuning, formation
* * * * *  Enseignant CNAM PACA, ISEN Toulon,  CESI Aix en Provence  * * * * *

Hors ligne

Pied de page des forums