Bonjour à tous,
Je rencontre un problème pour comparer deux dates dans une requête SQL.
Ma première date est formée à partir d'un champs qui est une chaine de caractère, de laquelle j'extrais la date.
Je cherche à la comparer à 'sysdate', mais j'obtiens une erreur : "a non numeric character was found where a numeric was expected".
Je vais utiliser un exemple pour plus de clarté.
La table "matable" contient un champs "savetime", de type VARCHAR(50), duquel j'extrais la date :
Je me retrouve avec un champs "test", dont les valeurs ressemblent à ça : "06/08/2008".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2 SELECT TO_DATE(SUBSTR(savetime,15,2) || '/' || SUBSTR(savetime,12,2) || '/2008','dd/mm/yyyy') AS test FROM matable
Je cherche ensuite à comparer cette liste de valeurs avec SYSDATE, en ne conservant que les dates antérieures à aujourd'hui :
J'obtiens l'erreur "a non numeric character was found where a numeric was expected".
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT test FROM ( SELECT TO_DATE(SUBSTR(savetime,5,2) || '/' || SUBSTR(savetime,2,2) || '/2008','dd/mm/yyyy') AS test FROM matable ) WHERE test < trunc(SYSDATE,'dd')
J'ai bien essayé des multiples combinaisons de to_date, to_char ou encore trunc un peu partout, rien ne marche.
Par contre, si j'applique un 'distinct' à ma sous requête, ça passe :
J'obtiens bien les valeurs distinctes de ma table dont la date est inférieure à aujourd'hui... mais ça n'est pas ce que je veux.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6 SELECT test FROM ( SELECT DISTINCT to_date(substr(savetime,5,2) || '/' || substr(savetime,2,2) || '/2008','dd/mm/yyyy') AS test FROM matable ) WHERE test < trunc(SYSDATE,'dd')
Je n'ai plus vraiment d'idée, et je suis bloqué.
Merci d'avance pour votre aide.
Partager