|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Nouveau Membre du Club
![]() |
Salut,
J'arrive pas à faire la difference entre 2 dates, le problème est que: J'ai une procedure stockée avec une paramètre en entréee qui est une date et dans la procedure je dois verifier si la date d'entrée est plus grande que les dates dans une table alors j'ai fait (date d'entréee - date dans la table )mais ce qui est bizard que qd j'entre la meme date, il affiche pas 0.... Comment on fait pour comparer 2 dates, sous Oracle Merci, |
|
|
00
|
|
|
#2 |
|
Membre émérite
![]() Inscription : janvier 2004 Messages : 845 ![]() |
salut,
il ne faut pas oublier que les dates contiennent également l'heure (et minutes, et secondes, ...) alors si tu veux ne comparer que le JOUR, utilise la fonction TRUNC sur chacune de tes dates à comparer pour ramener toutes le heures, minutes, etc... à 0 Code :
SELECT trunc(sysdate) - trunc(sysdate) FROM dual
__________________
Il est plus facile de voir les signes avant-coureurs après coup que l'inverse ! Yorglaa |
|
|
00
|
|
|
#3 |
|
Nouveau Membre du Club
![]() |
Merci pour la réponse, ce que je comprends que sous Oracle il y a pas de fontions pour comparer les dates que faire la soustraction.
|
|
|
00
|
|
|
#4 | |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Citation:
???? Pourquoi tu dis ça ? Sous Oracle tu peux comparer des dates avec =, >, <, etc et en plus tu peux soustraire des dates ce qui te donne un nombre de jour. Ce que Yorglaa te dis c'est qu'il faut faire attention quand tu compares des dates car le format interne est en realité DATETIME et donc si tu fais un test d'égalité deux dates ne sont égales que si elles sont exactement égales à la seconde pres ! D'ou le TRUNC pour arrondir a la journée pres. |
|
|
|
00
|
|
|
#5 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Ce qu'elle voudrait à mon avis ce sont des fonctions tout faites du style : GET_NB_DAY(DATE_DEBUT, DATE_FIN) qui calculerait le nombre de jour entre les 2 dates fournies en paramètre, etc.
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
00
|
|
|
#6 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Et bien si c'est cela une simple soustraction le fait directement. Pas besoins de fonction. Le resultat est en jours avec eventuellement un partie decimale.
Par exemple 02/01/2007 12:00 - 01/01/2007 00:00 donnera 1,5 soit un jour et 12heures |
|
|
00
|
|
|
#7 |
|
Nouveau Membre du Club
![]() |
Merci pour vos aides,
C vraiment ce que je cherche ce sont des fonctions dèjà faits.... Quand on compare 2 dates avec <,>, est-que les 2 dates doivent etre de type date car moi j'ai 2 dates dont le premier est de type Date et le deuxieme de type String et ca marche alors, je ne sais pas si par hazard que ca fonctionne ??? Merci |
|
|
00
|
|
|
#8 |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Tu n'as pas peur ! ! ! !
Il ne faut jamais comparer des choux et des carrotes. Si ca marche c'est qu'Oracle fait une conversion implicite et dans ce cas je suis bien incapable de savoir si il decide de convertir ton string en date ou ta date en string. Tu as donc une chance sur deux qu'il ne fasse pas ce que tu veux. Comme je ne suis pas joueur, je preferes toujousr faire une conversion explicite (avec un to_date) et maitriser ce qui se passe plutot que de laisser Oracle faire ce qu'il veut. J'irais meme plus loin il faut faire un to_date en precisant le format de conversion parce que c'est pas pcq aujourd'hui ta date en string est dans le format date par defaut qu'un jour cela le changera pas. |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Inscription : avril 2005 Messages : 1 672 ![]() |
Je suis entièrement avec Wurlitzer, en particulier avec la spécification explicite du format.
En effet, par expérience, je pense qu'il vaut mieux que le programme plante quitte à avoir une ORA-xxx plutôt qu'il fasse des calculs qui ne sont absolument pas ceux attendus (entre autres parce que les données ont été converties dans un autre format que celui souhaité). Un développeur(se) avertit en vaut 2, non ?
__________________
Modérateur des forums Oracle et Langage SQL Forum SQL : je n'interviens PAS plus de 4 fois dans une discussion car si c'est nécessaire cela prouve généralement que vous n'avez pas respecté : les règles du forum |
|
|
00
|
|
|
#10 | ||
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
bonjours j'écrit ici car mon probleme est sensiblement le meme que celui evoqué.
voila je fait un programme PL/SQL dans lequel je compare deux dates la premiere et recupéré dans un curseur et la seconde est celle du systeme (sysdate) à laquelle je retranche un nombre de jours qui et un number passé en parrametre de la procedure. Code :
26/44 PLS-00103: Encountered the symbol "<" when expecting one of the following: . ( ) , * % & - + / at mod remainder rem <an exponent (**)> and or || The symbol ")" was substituted for "<" to continue. 26/73 PLS-00103: Encountered the symbol ")" when expecting one of the following: * & - + / at mod remainder rem then <an exponent (**)> and or || multiset year DAY_ pour info "cur" est mon curseur.Et la ligne 26 est "if (trunc ..." quelqu'un peut il m'éclairer?? |
||
|
|
00
|
|
|
#11 | ||||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Bonjour,
Code :
Code :
|
||||
|
|
00
|
|
|
#12 |
|
Futur Membre du Club
![]() Inscription : décembre 2006 Messages : 65 ![]() |
merci beaucoup
|
|
|
00
|
|
|
#13 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Le || c'est un OR non ?
le && c'est un AND
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
|
|
#14 | |
|
Membre du Club
![]() Inscription : août 2004 Messages : 36 ![]() |
Citation:
|
|
|
|
00
|
|
|
#15 | ||||
![]() Salim Développeur et DBA Oracle Inscription : octobre 2006 Messages : 872 ![]() |
Salut,
Code :
Code :
|
||||
|
|
00
|
|
|
#16 | |
|
Membre éclairé
![]() Inscription : avril 2006 Messages : 465 ![]() |
Citation:
Euh vous parlez quelle langue ? en C ok mais en PL/SQL il faut employer OR et AND |
|
|
|
00
|
|
|
#17 |
![]() ![]() Consultant en Business Intelligence Inscription : janvier 2007 Messages : 1 192 ![]() |
D'accord avec Wurlitzer, à part la concaténation de 2 champs avec ||, je ne vois pas d'autre utilisation en pl/sql de || et de &&.
|
|
|
00
|
|
|
#18 |
|
Expert Confirmé Sénior
![]() Inscription : juillet 2003 Messages : 3 450 ![]() |
Bien sur je parlais des autres langages de programmation (C, Php, ...)
__________________
More Code : More Bugs. Less Code : Less Bugs |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com