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

SQL Oracle Discussion :

Différence horaire Oracle 10g


Sujet :

SQL Oracle

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Février 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2010
    Messages : 58
    Par défaut Différence horaire Oracle 10g
    Bonjour, je recherche à effectuer la différence entre deux horraire l'un defini dans une table l'autre étant la date courante.

    en premier très simple j'ai tenté ceci
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    select to_char(sysdate,'hh24:mi:ss') - to_char(XXXXXX,'hh24:mi:ss') from dual, v5.toto
    mais j'ai eu comme erreur cellec ci
    ORA-01722: invalid number


    J'ai tenté de développer un PL/SQL mais j'ai comme erreur celle-ci.

    ORA-06502: PL/SQL: numeric or value error: character to number conversion error
    ORA-06512: at line 28


    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
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    DECLARE
    cursor chdjour (hjour2 VARCHAR2)
    is 
    select to_char(sysdate,'hh24:mi') as hjour 
    from dual;
    --
    cursor hcommande (henvoi2 VARCHAR2)
    is
    select distinct to_char(XXXXX,'hh24:mi') as henvoi
    from v5.toto
    where 1=1
    and trunc(Plop) = trunc(sysdate);
    --
    hjour VARCHAR2 (30 Byte); 
    henvoi VARCHAR2 (30 Byte);
    diff VARCHAR2 (30 Byte);
    --
    BEGIN
        open chdjour (hjour);
        loop
        fetch chdjour
        into hjour;
            open hcommande (henvoi);
            loop
            fetch  hcommande
            into henvoi;
            diff := (henvoi - hjour);
             dbms_output.put_line('nblien='||diff); 
             end loop;
             close hcommande;
             EXIT WHEN chdjour%NOTFOUND;
        EXIT WHEN hcommande%NOTFOUND;
        END LOOP;
        close chdjour;
    end;
    Par contre j'insiste sur le fait que si je peux éviter le PL/SQL c'est mieux
    je voudrai ensuite comparer cette valeur à une autre et effecuter une action si besoin...
    Merci

  2. #2
    Modérateur
    Avatar de Waldar
    Homme Profil pro
    Sr. Specialist Solutions Architect @Databricks
    Inscrit en
    Septembre 2008
    Messages
    8 454
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Sr. Specialist Solutions Architect @Databricks
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Septembre 2008
    Messages : 8 454
    Par défaut
    Est-ce que ceci est suffisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select sysdate - XXXX
      from v5.toto;

  3. #3
    Membre confirmé
    Homme Profil pro
    Ingénieur validation
    Inscrit en
    Février 2010
    Messages
    58
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur validation
    Secteur : Communication - Médias

    Informations forums :
    Inscription : Février 2010
    Messages : 58
    Par défaut
    Citation Envoyé par Waldar Voir le message
    Est-ce que ceci est suffisant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    select sysdate - XXXX
      from v5.toto;

    Cela fonctionne mais je voudrai récupérer que l'horaire et non la différence de date au totale

  4. #4
    McM
    McM est déconnecté
    Expert confirmé

    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
    Billets dans le blog
    4
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    to_char(trunc(sysdate) + (datefin - datedeb), 'HH24:MI:SS')
    Attention, ceci est limité à 24h

  5. #5
    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
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    select sysdate,xxx,
      to_char(extract(hour from (sysdate+10000 - xxx) day to second),'FM00')||':'|| 
      to_char(extract(minute from (sysdate+10000 - xxx) day to second),'FM00')||':'|| 
      to_char(extract(second from (sysdate+10000 - xxx) day to second),'FM00')  diff 
    from t;
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    SYSDATE               XXX                   DIFF       
    --------------------- --------------------- -----------
    2011-06-08 11:13:24   2021-01-01 01:01:01   10:12:23   
    2011-06-08 11:13:24   2001-01-01 01:01:01   10:12:23
    [edit]if faudra ensuite définir ce que tu veux faire avec -00:00:01 ou 23:59:59[/edit]

Discussions similaires

  1. Différence oracle 9.2 et oracle 10g
    Par jnauche dans le forum SQL
    Réponses: 4
    Dernier message: 09/06/2008, 21h59
  2. Installation ORACLE 10g sous XP Pro
    Par DUCORROY dans le forum Oracle
    Réponses: 7
    Dernier message: 21/10/2004, 09h08
  3. Installation Oracle 10g sous Windows 2000
    Par Jeff206 dans le forum Oracle
    Réponses: 6
    Dernier message: 24/08/2004, 15h51
  4. [ORACLE 10g Linux] Pbm de connexion avec un Client winXP
    Par zarbiwayne dans le forum Administration
    Réponses: 26
    Dernier message: 20/08/2004, 22h37

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