soustraction de date - SQL/NoSQL - Programmation
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 ?
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
Marsh Posté le 09-02-2004 à 12:49:08
| Citation :  Date Arithmetic  | 
 
 
Donc il te suffit de faire Date2 - Date1, et le résultat sera un nombre exprimé en jours.
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 ?
Marsh Posté le 09-02-2004 à 15:06:08
Exemple...
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 
 
 
Marsh Posté le 09-02-2004 à 16:12:10
et ca donne ... au lieu de ...
Marsh Posté le 09-02-2004 à 16:16:02
| ciloute a écrit : si je veux soustraire une date avec la date du jour  | 
 
 sysdate-DateMaj  
 
désolé, j'ai mal lu l'exemple, j'avais lu 28/02/2003 - sysdate
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 ?
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
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" ) ) 
 
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  
 
Mais bon, c'est moins propre... 
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
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