IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Oracle Discussion :

convertion d'un temps ( base 100 000 ) en heure minute


Sujet :

Oracle

  1. #1
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 33
    Points : 22
    Points
    22
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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.

  2. #2
    McM
    McM est déconnecté
    Expert éminent

    Homme Profil pro
    Développeur Oracle
    Inscrit en
    Juillet 2003
    Messages
    4 580
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Développeur Oracle

    Informations forums :
    Inscription : Juillet 2003
    Messages : 4 580
    Points : 7 740
    Points
    7 740
    Billets dans le blog
    4
    Par défaut
    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
    Mon Blog PL/Sql : Fichier Zip / Image BMP / Lire sqliteDB / QRCode et Images PNG ou BMP

  3. #3
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    trunc(TM_occupation/60)||':'||to_char(mod(TM_occupation,60),'FM00')

  4. #4
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut suite de la conversion du temps en base 60
    pour le menbre expert :
    J'ai essayé ta formule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  5. #5
    Membre actif
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    178
    Détails du profil
    Informations personnelles :
    Âge : 45
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 178
    Points : 220
    Points
    220
    Par défaut
    Ce ne serait pas plutôt 0:25 et 0:04 ?

    Je pense que cette formule est correcte :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TRUNC(TM_occupation/100000)||':'||TO_CHAR(TRUNC(MOD(TM_occupation, 100000) * 60/100000),'FM00')
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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

  6. #6
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    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

  7. #7
    Membre à l'essai
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2006
    Messages
    33
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Haute Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2006
    Messages : 33
    Points : 22
    Points
    22
    Par défaut suite de la conversion
    bonjour , Messieurs

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

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    TRUNC(TM_occupation/100000)||':'||TO_CHAR(TRUNC(MOD(TM_occupation, 100000) * 60/100000),'FM00')
    sous Report Builder
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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 .

  8. #8
    Expert confirmé
    Avatar de laurentschneider
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Décembre 2005
    Messages
    2 944
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

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

    Informations forums :
    Inscription : Décembre 2005
    Messages : 2 944
    Points : 4 926
    Points
    4 926
    Par défaut
    NumberToStrPicture et NumberTruncate ne sont pas des fonctions standard sql Oracle, alors que to_char et trunc sont des fonctions standards

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Transfert 100.000.000 de records.
    Par Ujitsu dans le forum Oracle
    Réponses: 1
    Dernier message: 17/08/2007, 10h19
  2. Réponses: 5
    Dernier message: 29/10/2006, 19h14
  3. Combo (100 000 items) Perf ?
    Par Dry dans le forum Composants VCL
    Réponses: 10
    Dernier message: 19/09/2005, 20h16
  4. Comment afficher une requete comportant 100.000 reponses
    Par thibal dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/08/2005, 09h17

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo