Bonjour
Ca ne serait pas truffé de fautes de frappe, ce que vous nous présentez ?
Entre ldate, ddate, et ldtate, on a du mal à y retrouver ses petits !!
Quoi qu'il en soit, si la valeur en dur fonctionne, mais pas l'appel à sysdate, c'est que vous avez un bête problème de format de date.
lc$where='to_char(ddate,'dd/mm/yyyy')='(sysdate-1);'
Ne pas oublier qu'une date est systématiquement stockée par Oracle avec les heures, minutes et secondes, et que lors d'une comparaison, tous ces éléments sont pris en compte.
SYSDATE renvoie aussi une date dont la précision va jusqu'aux secondes.
Si besoin, il faut donc arrondir vos dates via TRUNC ou ROUND avant de les comparer.
Petites remarques au passage :
- stocker une date dans un VARCHAR2 est probablement une mauvaise idée, puisque cela vous oblige à des transtypages
- il faut comparer des éléments de même type (DATE avec DATE, VARCHAR2 avec VARCHAR2)
- ne pas utiliser inutilement les fonctions de conversion TO_CHAR ou TO_DATE
Partager