Vous n'êtes pas identifié(e).
Pages : 1
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
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
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
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
Hors ligne
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
est ce que dans les faits cela oblige t'il les utilisateurs à convertir eux meme le temps en centieme ?
Hors ligne
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
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
Pages : 1