soustraction de date

soustraction de date - SQL/NoSQL - Programmation

Marsh Posté le 09-02-2004 à 12:22:43    

Comment fait on une soustraction de 2 dates dans une base oracle; avec quelle fonction faut il convertir les dates

Reply

Marsh Posté le 09-02-2004 à 12:22:43   

Reply

Marsh Posté le 09-02-2004 à 12:27:44    

Impossible de répondre à cette question :
Tu veux quoi en sortie, des siècles ou des femtosecondes ?


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-02-2004 à 12:33:58    

J'ai besoin de soustraire 15/02/2004 à 01/01/2004 pour obtenir le nombre de jour entre les 2 dates

Reply

Marsh Posté le 09-02-2004 à 12:49:08    

Citation :

Date Arithmetic
 
You can add and subtract number constants as well as other dates from dates. Oracle interprets number constants in arithmetic date expressions as numbers of days. For example, SYSDATE + 1 is tomorrow. SYSDATE - 7 is one week ago. SYSDATE + (10/1440) is ten minutes from now. Subtracting the hiredate column of the emp table from SYSDATE returns the number of days since each employee was hired. You cannot multiply or divide DATE values.


 
Donc il te suffit de faire Date2 - Date1, et le résultat sera un nombre exprimé en jours.


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-02-2004 à 14:56:12    

si je veux soustraire une date avec la date du jour
 
j'ai fait DateMaj-sysdate
 
mais je n'obtiens pas le bon nombre de jours
 
Comment fait on ?

Reply

Marsh Posté le 09-02-2004 à 15:06:08    

Exemple...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-02-2004 à 15:14:56    

Exemple: 28/02/2004 - 09/02/2004
 
 
09/02/2004 correspond à la date d'aujourd'hui
 
 

Reply

Marsh Posté le 09-02-2004 à 16:12:10    

et ca donne ... au lieu de ...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-02-2004 à 16:16:02    

ciloute a écrit :

si je veux soustraire une date avec la date du jour
 
j'ai fait DateMaj-sysdate
 
mais je n'obtiens pas le bon nombre de jours
 
Comment fait on ?


 
sysdate-DateMaj :??:
 
désolé, j'ai mal lu l'exemple, j'avais lu 28/02/2003 - sysdate


Message édité par dalcap le 09-02-2004 à 17:08:13
Reply

Marsh Posté le 09-02-2004 à 16:41:34    

par exemple, si je mets 09/02/2004 - 09/02/2004 j'obtiens 0.69 au lieu de 0
 
si je mets 08/03/2004- 09/02/2004 j'obtiens 27.31 au lieu de 28
 
Que faire ?

Reply

Marsh Posté le 09-02-2004 à 16:41:34   

Reply

Marsh Posté le 09-02-2004 à 16:47:43    

je pense qu'il prend en compte aussi l'heure, je souhaiterai seulement comparé les dates

Reply

Marsh Posté le 09-02-2004 à 16:51:06    

Et bien en fait il faut comprendre que sysdate ne te donne pas 09/02/2004, mais 09/02/2004 16:44:21
Le nombre de jours tient compte de l'heure.
Par exemple, 1.5 jours, c'est 36 heures.
Donc tu doit comparer avec la date du jour à minuit, par exemple
 
MaDate - TO_DATE( TO_CHAR( SYSDATE, "DD/MM/YYYY" ) )
 
:D


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 09-02-2004 à 16:56:48    

Autre solution, tu prend l'entier supérieur le plus proche du nombre que tu as.
Exemple :
CEIL( TO_DATE( "10/02/2004", "DD/MM/YYYY" ) - SYSDATE ) -> 1 :D
Mais bon, c'est moins propre...


---------------
Laissez l'Etat dans les toilettes où vous l'avez trouvé.
Reply

Marsh Posté le 10-02-2004 à 22:38:20    

personnellement je fais comme ça sous oracle
 
to_char(sysdate,'J')
 
ou bien  
 
to_char(to_date('01/01/2004','DD/MM/YYYY'),'J')
 
ça fait bien des comptes en jour et ne tient pas compte des heures..
 
J = Julian date = nb de jours écoulés depuis une date précise...
 
C'est assez performant car je suis ammenée à faire des comptages serrés sur des volumes de 50000 à 70000 enregistrements

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed