Précédent   Forum des professionnels en informatique > Bases de données > Oracle
Oracle Forum Oracle : le serveur, les outils, ... Voir F.A.Q Oracle Tutoriels Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 19/04/2007, 12h52   #1
Invité de passage
 
Inscription : juillet 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 24
Points : 4
Points : 4
Par défaut convertion d'un temps ( base 100 000 ) en heure minute

Bonjour ,

j'ai une requête sous oracle ou le temps ( TM_OCCUPATION )est en base 100 000. Je souhaiterais avoir ce champ en base 60.

Code :
1
2
3
4
 
SELECT cd_wo, cd_technician, tm_occupation
FROM occupation
WHERE dt_occupation = '04/04/07'
réponse sous oracle

CD_WO CD_TECHNICIAN TM_OCCUPATION
------ --------------- -----------------
72218 ROSSIGNOL-O 41667
72221 ROSSIGNOL-O 8333

J'ai une formule qui fonctionne sous REPORT BUILDER. C'est un petit logiciel d'édition . La formule est la suivante:

Code :
1
2
3
 
 
NumberToStrPicture( NumberTruncate(TM_OCCUPATION/100000, 0), '#0' ) || ':' || NumberToStrPicture( (TM_OCCUPATION/100000-NumberTruncate(TM_OCCUPATION/100000, 0 ) ) * 60 , '00' )
J'ai essayer de l'appliquer sous Oracle.

Code :
1
2
3
4
5
 
 
SELECT cd_wo, cd_technician, (NumberTruncate(TM_occupation/100000,0),'#0' ) || ':' || NumberToStrPicture( (TM_occupation/100000-NumberTruncate(TM_occupation/100000, 0 ) ) * 60 , '00' )tps inter
FROM occupation
WHERE dt_occupation = '04/04/07'
Mais il m'affiche un message d'erreur du type :
ERREUR à la ligne 1 :
ORA-00907: missing right parenthesis

Je ne vois pas ou est le problème. Si quelqu'un peut m'aider.
laurent7474 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 13h42   #2
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 450
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 450
Points : 4 209
Points : 4 209
Pff, faut quand même tester un peu avant de poster.

(NumberTruncate(TM_occupation/100000,0),'#0' )
C'est quoi cette virgule '#0' ??
Ce serait pas le 2nd paramètre de NumberToStrPicture par hasard ?

__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 19/04/2007, 13h50   #3
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
Code :
1
2
 
trunc(TM_occupation/60)||':'||to_char(mod(TM_occupation,60),'FM00')
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 08h21   #4
Invité de passage
 
Inscription : juillet 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 24
Points : 4
Points : 4
Par défaut suite de la conversion du temps en base 60

pour le menbre expert :
J'ai essayé ta formule

Code :
1
2
3
4
5
 
 
SELECT cd_wo, cd_technician, trunc(TM_occupation/60)||':'||to_char(mod(TM_occupation,60),'FM00')
FROM occupation
WHERE dt_occupation = '04/04/07'
la réponse que le sytème m'a fait est la suivante :

Code :
1
2
3
4
5
6
7
 
 
CD_WO CD_TECHNICIAN        TRUNC(TM_OCCUPATION/60)||':'||TO_CHAR(MOD(TM
----- -------------------- --------------------------------------------
72218 ROSSIGNOL-O          694:27
72221 ROSSIGNOL-O          138:53
72340 DUROT_A.             833:20
Le temps que je devrais avoir est pour la :
1ère ligne 0:20
2 ' ' 0:05

Merci pour ton aide
laurent7474 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 08h42   #5
Membre confirmé
 
Inscription : janvier 2006
Messages : 178
Détails du profil
Informations personnelles :
Âge : 33

Informations forums :
Inscription : janvier 2006
Messages : 178
Points : 208
Points : 208
Ce ne serait pas plutôt 0:25 et 0:04 ?

Je pense que cette formule est correcte :
Code :
TRUNC(TM_occupation/100000)||':'||TO_CHAR(TRUNC(MOD(TM_occupation, 100000) * 60/100000),'FM00')
Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
rbaraer@Ora10g> SELECT TM_occupation, TRUNC(TM_occupation/100000)||':'||TO_CHAR(TRUNC(MOD(TM_occupation, 100000) * 60/100000),'FM00')
FROM
  2    3  (
  4      SELECT 41667 TM_occupation
  5      FROM DUAL
  6      UNION
  7      SELECT 8333 TM_occupation
  8      FROM DUAL
  9      UNION
 10      SELECT 257800 TM_occupation
 11      FROM DUAL
 12  )
 13  ORDER BY TM_occupation DESC;
 
TM_OCCUPATION TRUNC(TM_OCCUPATION/100000)||':'||TO_CHAR(TR
------------- --------------------------------------------
       257800 2:34
        41667 0:25
         8333 0:04
 
rbaraer@Ora10g>
Cordialement,

rbaraer
rbaraer est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/04/2007, 09h02   #6
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
tant mieux si ta formule est correcte! je n'ai sans doute pas bien compris ce qu'était la base 100000, mais tu as su réemployer mes fonctions to_char, trunc et mod, bravo
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 26/04/2007, 15h55   #7
Invité de passage
 
Inscription : juillet 2006
Messages : 24
Détails du profil
Informations forums :
Inscription : juillet 2006
Messages : 24
Points : 4
Points : 4
Par défaut suite de la conversion

bonjour , Messieurs

J'ai essayer la formule .Elle fonctionne très bien.

Code :
1
2
 
TRUNC(TM_occupation/100000)||':'||TO_CHAR(TRUNC(MOD(TM_occupation, 100000) * 60/100000),'FM00')
Il est exact qu'à le 1ère ligne la réponse était de 0:25 (erreur de ma part)
la 2ième est bien de 0:05

Pour explication . J'utilise une GMAO dénomé CARL Master. Cette GMAO fonctionne sous environnement Windows avec comme base de données Oracle. Quand on saisi un temps ( d'arrêt , d'occupation ) dans un bon de travail ( en heures/minutes/ et même jusqu'à la seconde ), il transforme cette données dans Oracle en base 100000 .
1 heure saisi dans Carl correspond à 100000 " millièmes d'heures " dans oracle
30 Minutes saisi dans Carl correspond à 50000 " millièmes d'heures " dans oracle
Ainsi de suite.

D'autre part , Report builder est logiciel d'édition de base qui est fourni avec ce logiciel de GMAO. Il nous permet d'éditer ( bons de travaux, commandes, demande de prix...) . S'ils utilisent les mêmes champs , les formules elles, sont différentes.

Sous oracle
Code :
1
2
 
TRUNC(TM_occupation/100000)||':'||TO_CHAR(TRUNC(MOD(TM_occupation, 100000) * 60/100000),'FM00')
sous Report Builder
Code :
1
2
 
NumberToStrPicture( NumberTruncate(TM_OCCUPATION/100000, 0), '#0' ) || ':' || NumberToStrPicture( (TM_OCCUPATION/100000-NumberTruncate(TM_OCCUPATION/100000, 0 ) ) * 60 , '00' )
L'une fonctionne sous oracle , pas l'autre.
Je n'utilise le Sql que de temps en temps & je ne le maîtrise pas, d'ou ma demande d'aide.
Merci à tous .
laurent7474 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/04/2007, 09h42   #8
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 927
Détails du profil
Informations personnelles :
Nom : Homme Laurent Schneider
Localisation : Suisse

Informations professionnelles :
Activité : Administrateur de base de données
Secteur : Finance

Informations forums :
Inscription : décembre 2005
Messages : 2 927
Points : 4 549
Points : 4 549
NumberToStrPicture et NumberTruncate ne sont pas des fonctions standard sql Oracle, alors que to_char et trunc sont des fonctions standards
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 01h37.


 
 
 
 
Partenaires

Hébergement Web