Bonjour,
J'ai un peu du mal.
J'aimerai comparer 2 dates dans ma requête:
ma date = "30/06/2008 06:00:00"
avec la SYSDATE
Mais savoir si elle sont égales sans comparer avec l'heure.
Comment dois-je faire? Merci.
Bonjour,
J'ai un peu du mal.
J'aimerai comparer 2 dates dans ma requête:
ma date = "30/06/2008 06:00:00"
avec la SYSDATE
Mais savoir si elle sont égales sans comparer avec l'heure.
Comment dois-je faire? Merci.
Re,
Je crois avoir trouve la solution :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 AND TO_DATE(myDate, 'dd/mm/yyyy') = TO_DATE(SYSDATE, 'dd/mm/yyyy')
Ou bien (je préfère personnellement car on conserve des dates) :
Code : Sélectionner tout - Visualiser dans une fenêtre à part AND TRUNC(myDate) = TRUNC(SYSDATE)
TO_DATE(SYSDATE
Jamais de to_date sur une date. Un to_date transforme une chaine de caractère en date, c'est sa seule fonction.
Bien vu, cela m'avait échappé. J'étais persuadé d'avoir vu un TO_CHAR, d'où ma remarque "car on conserve des dates" :p
Effectivement le code auquel je pensais est :
Mais encore une fois je préfère TRUNC
Code : Sélectionner tout - Visualiser dans une fenêtre à part AND TO_CHAR(myDate, 'dd/mm/yyyy') = TO_CHAR(SYSDATE, 'dd/mm/yyyy').
Toxycyty, ton code original est à proscrire car voici ce qui se passe :
- conversion des champs DATE en chaine avec le format de date de la session (fonction des paramètres NLS, non maitrisé)
- conversion des chaines en date avec le format voulu : 'dd/mm/yyyy', mais rien ne garantit que la conversion implicite précédente a utilisé ce format !
HTH
Attention !!! On perd l'usage de tout index basé sur la colonne mydate dès que l'on fait une opération dessus dans le WHERE. C'est le cas avec votre formule.
Pour éviter ça il faut plutôt faire l'encadrement :
Cdlt.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 AND myDate >= TRUNC(SYSDATE) AND myDate < TRUNC(SYSDATE) +1
Partager