Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour 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 07/06/2011, 17h37   #1
Invité régulier
 
Homme Cedric Moretti
Chef de projet MOA
Inscription : février 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : Homme Cedric Moretti
Localisation : France

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : février 2010
Messages : 51
Points : 7
Points : 7
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 :
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 :
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
cedric190985 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/06/2011, 17h54   #2
Modérateur
 
Homme Fabien
Ingénieur d'études en décisionnel
Inscription : septembre 2008
Messages : 5 684
Détails du profil
Informations personnelles :
Nom : Homme Fabien
Âge : 34
Localisation : France, Yvelines (Île de France)

Informations professionnelles :
Activité : Ingénieur d'études en décisionnel
Secteur : Arts - Culture

Informations forums :
Inscription : septembre 2008
Messages : 5 684
Points : 10 433
Points : 10 433
Envoyer un message via ICQ à Waldar Envoyer un message via Skype™ à Waldar
Est-ce que ceci est suffisant :
Code :
1
2
SELECT sysdate - XXXX
  FROM v5.toto;
__________________
Email : http://scr.im/waldar
Waldar est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 08h56   #3
Invité régulier
 
Homme Cedric Moretti
Chef de projet MOA
Inscription : février 2010
Messages : 51
Détails du profil
Informations personnelles :
Nom : Homme Cedric Moretti
Localisation : France

Informations professionnelles :
Activité : Chef de projet MOA
Secteur : Agroalimentaire - Agriculture

Informations forums :
Inscription : février 2010
Messages : 51
Points : 7
Points : 7
Citation:
Envoyé par Waldar Voir le message
Est-ce que ceci est suffisant :
Code :
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
cedric190985 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 09h48   #4
McM
Expert Confirmé Sénior
 
Inscription : juillet 2003
Messages : 3 437
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 3 437
Points : 4 173
Points : 4 173
Code :
to_char(trunc(sysdate) + (datefin - datedeb), 'HH24:MI:SS')
Attention, ceci est limité à 24h
__________________
More Code : More Bugs. Less Code : Less Bugs
McM est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 08/06/2011, 10h49   #5
Expert Confirmé Sénior


 
Avatar de laurentschneider
 
Homme Laurent Schneider
Administrateur de base de données
Inscription : décembre 2005
Messages : 2 925
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 925
Points : 4 547
Points : 4 547
Code :
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 :
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]
__________________
Mon blog : laurentschneider.com
Mon livre : Advanced Oracle SQL Programming
laurentschneider est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 20h41.


 
 
 
 
Partenaires

Hébergement Web