France Hardware : Forums de discussion - Découvrez notre nouveau comparateur d'offres Internet
Retrouvez les prix près de chez vous :  
Index du forum | Liste des membres | Liste des groupes | Inscription | F-A-Q | Recherche
Pseudo :    Password :     
29 511 membres enregistrés - 2 069 318 posts - 122 026 topics
Index des forums FH  | Index des forums DegroupNews
      Programmation
           Bases de données
                [SQL/PLSQL] Différence entre deux date [Solution trouvée]
68 connectés(record : 2799 le 29 May 2016 - 15 h 34)

Vous devez vous connecter pour répondre au topic.
[SQL/PLSQL] Différence entre deux date [Solution trouvée]

Murmure
Boudeuse, râleuse

Messages : 7 271
Inscrit le 12/11/01
Ville : ailleurs
Non connecté
  Posté le 29 June 2006 - 15 h 48 m 05 s
Alors voilà, j'ai un souci, je suis en Oracle 8.chaispô et je dois calculer la durée écoulée entre deux dates et obtenir le résultat en minutes...
ma derniere idée en date c'était


UPDATE DW_LOT_PARAM_DYNAMIC_HISTORY
SET DW_LOT_PARAM_DYNAMIC_HISTORY.VARDATA = To_CHAR(DW_LOT_PARAM_DYNAMIC_HISTORY.VSTOP - DW_LOT_PARAM_DYNAMIC_HISTORY.VSTART,'mi')
WHERE DW_LOT_PARAM_DYNAMIC_HISTORY.LOTID = cLOTID
AND DW_LOT_PARAM_DYNAMIC_HISTORY.VARNAME = cVARNAME
AND DW_LOT_PARAM_DYNAMIC_HISTORY.VSTOP = cVSTART;

Entre nous c'est le pire des résultat ! :dd:

Je précise que le résultat atteri dans un varchar (c'est une table "foure tout") et que je peux utiliser une variable intermédiaire....


Message édité 2 fois, la dernière par Murmure le 29 June 2006 - 18 h 14.

:pitre:

seb.c_38


Messages : 1 269
Inscrit le 07/12/05
Ville : Grenoble
Non connecté
  Posté le 29 June 2006 - 16 h 08 m 12 s
tu parles hebreux murmure ?? :lol:




Murmure
Boudeuse, râleuse

Messages : 7 271
Inscrit le 12/11/01
Ville : ailleurs
Non connecté
  Posté le 29 June 2006 - 16 h 09 m 29 s


Le 29 juin 2006 - 16 h 08, seb.c_38 a écrit :
tu parles hebreux murmure ?? :lol:

non lol et PLSQL non plus !



:pitre:

seb.c_38


Messages : 1 269
Inscrit le 07/12/05
Ville : Grenoble
Non connecté
  Posté le 29 June 2006 - 16 h 13 m 45 s
c'est quoi ton prob ?

Tu veux que ca soit plus joli ?




Murmure
Boudeuse, râleuse

Messages : 7 271
Inscrit le 12/11/01
Ville : ailleurs
Non connecté
  Posté le 29 June 2006 - 16 h 21 m 23 s
non on me contraint à donner un résultat en minute
pas en jours, pas en secondes, pas en hh24:mi:ss...



:pitre:

seb.c_38


Messages : 1 269
Inscrit le 07/12/05
Ville : Grenoble
Non connecté
  Posté le 29 June 2006 - 16 h 26 m 19 s
ben tu prends le resultat en secondes
tu divises par 60
tu as les min





Woofy
Totalement inutile, complètement indispensable

Messages : 31 539
Inscrit le 11/01/02
Ville : Lyon
Non connecté
  Posté le 29 June 2006 - 16 h 32 m 45 s
Ok, alors comment tu fais pour avoir le resultat en secondes ? :D
Desole Mu, mais j'ai saute tout les cours d'oracle donc bah j'en sais rien.




seb.c_38


Messages : 1 269
Inscrit le 07/12/05
Ville : Grenoble
Non connecté
  Posté le 29 June 2006 - 16 h 39 m 27 s
la fonction:
To_CHAR(val, 'mi')

donne un resultat entre 0 et 59

si la valeur depasse 59 min, tu auras un resultat faux.





Murmure
Boudeuse, râleuse

Messages : 7 271
Inscrit le 12/11/01
Ville : ailleurs
Non connecté
  Posté le 29 June 2006 - 16 h 40 m 09 s


Le 29 juin 2006 - 16 h 32, Woofy a écrit :
Ok, alors comment tu fais pour avoir le resultat en secondes ? :D
Desole Mu, mais j'ai saute tout les cours d'oracle donc bah j'en sais rien.

tout à fait car oracle donne le résultat dans l'unité la plus "intelligente", si la soustraction donne une réponse > à 1jour il te donne le résultat en jour, sinon en hh:mi:ss



:pitre:

seb.c_38


Messages : 1 269
Inscrit le 07/12/05
Ville : Grenoble
Non connecté
  Posté le 29 June 2006 - 16 h 41 m 06 s
essayes:
SSSSS Seconds past midnight (0-86399).

au lieu de MI.

Ensuite tu fait ta division par 60.




grabber
Coordinateur
MacBook Pro Powered

Messages : 9 506
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 29 June 2006 - 16 h 54 m 50 s
euh je connais pas la version oracle de la chose, mais je dirais a tout hasard que la derniere soluce proposee par seb ne fonctionne aps car elle ne tient qu'a un seul jour, hors ici on parle de 2 dates...
est il possible de se referer a une date fixe via un timestamp ??? cela reviendrait a faire la difference des 2 timestamp puis de reconvertir cela en minutes. l'avantage etant que ca marchera pour 2 dates quelles qu'elles soient...



:firefox: :ol:

Murmure
Boudeuse, râleuse

Messages : 7 271
Inscrit le 12/11/01
Ville : ailleurs
Non connecté
  Posté le 29 June 2006 - 17 h 03 m 47 s
j'aurais trouvé ça cool mais le monsieurs me dit
"ORA-01481: invalid number format model"

sinon si tu m'aides à en faire un timestamp, je fais des extracts...



:pitre:

grabber
Coordinateur
MacBook Pro Powered

Messages : 9 506
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 29 June 2006 - 18 h 02 m 05 s
rah le prob c'est que j'y connais rien en oracle...
moi le timestamp, je le genere au niveau du prog puis je le case dans un varchar. apres avec les 2 varchars, juste une soustraction bete et mechante, mais je saurais pas te dire comment faire ca dans ton cadre :(



:firefox: :ol:

Murmure
Boudeuse, râleuse

Messages : 7 271
Inscrit le 12/11/01
Ville : ailleurs
Non connecté
  Posté le 29 June 2006 - 18 h 14 m 00 s
Finalement j'ai trouvé cette petite fonction sur le forum oracle et ça marche :



create or replace function datediff( p_what in varchar2,
p_d1 in date,
p_d2 in date ) return number
as
l_result number;
begin
select (p_d2-p_d1) *
decode( upper(p_what),
'SS', 24*60*60, 'MI', 24*60, 'HH', 24, NULL )
into l_result from dual;

return l_result;
end;



:pitre:

grabber
Coordinateur
MacBook Pro Powered

Messages : 9 506
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 29 June 2006 - 18 h 16 m 37 s
nikel ;)



:firefox: :ol:

seb.c_38


Messages : 1 269
Inscrit le 07/12/05
Ville : Grenoble
Non connecté
  Posté le 29 June 2006 - 18 h 44 m 15 s
Nickel aussi,

Car mes connaissance en Oracle sont en dessous de celles de Grabber.





bernie38
Waldorf (le pote à Statler)

Messages : 11 452
Inscrit le 28/08/03
Ville : Claix
Non connecté
  Posté le 29 June 2006 - 19 h 35 m 50 s


Le 29 juin 2006 - 18 h 14, Murmure a écrit :
Finalement j'ai trouvé cette petite fonction sur le forum oracle et ça marche :



create or replace function datediff( p_what in varchar2,
p_d1 in date,
p_d2 in date ) return number
as
l_result number;
begin
select (p_d2-p_d1) *
decode( upper(p_what),
'SS', 24*60*60, 'MI', 24*60, 'HH', 24, NULL )
into l_result from dual;

return l_result;
end;



c'est juste comme ça que je fais dans mes progs, mais j'ai pas osé donner cette solution, pensant passer pour un gros lourd avec ses solutions basiques :unhappy:
sauf qu'à la place de 24 * 60, je mets 1440 et à la place de 24 * 60 *60... bref :D



La Montagne n'est pas dangereuse : on ne peut qu'y perdre la vie, tandis qu'en ville on devient bête et méchant
Voltaire


grabber
Coordinateur
MacBook Pro Powered

Messages : 9 506
Inscrit le 06/03/02
Ville : Angers
Non connecté
  Posté le 01 July 2006 - 12 h 30 m 05 s


Le 29 juin 2006 - 18 h 44, seb.c_38 a écrit :
Nickel aussi,

Car mes connaissance en Oracle sont en dessous de celles de Grabber.




tu parles !!! j'y connais rien du tout en oracle :lol:, une vraie buse :lol:, c'est juste la methode que j'utilise en php pour faire la difference de 2 dates :jap:



:firefox: :ol:

Page genérée en 0.2740 secondes par RahForum 2.0 | Gzip off |  Stats |  Metaforums |  RSS
© 2004 Cerbere Systems.
Prix Matériel Informatique | Informatique Lyon | Informatique Grenoble | Informatique Annecy | Informatique Marseille | Informatique Bordeaux | Forum Informatique
ADSL | Actualité ADSL | Deligo | Appareil photo | Commande Au Volant
Creative Commons
Message Boards and Forums Directory