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