OS, Software, Réseaux & Jeux vidéos : Ashe et 10 utilisateurs inconnus

 Mot :   Pseudo :  
 
Bas de page
Auteur
 Sujet :

Caractère joker pour les DATE sous Oracle

 
n°25694
schumacher
Posté le 08-08-2005 à 17:02:42  profilanswer
 

Salut à tous.
 
Je fais un petit outil en JSP qui à partir d'une interface web lance des requêtes sous Oracle et affiche le résultat à l'écran pour effectuer différentes opérations.
 
Dans mon formulaire, y'a des champs de type date avec la possibilité pour l'utilisateur de retourner tous les élements d'une année donnée, auquel cas il laisse les champs inutiles (mois, jour, etc.) vides.
 
Résultat, quand je construis la requête à envoyer à Oracle, un petit caractère joker m'aiderait bien. Le % ne passe pas, je trouve ça bizarre.
 
select * from test where maDate = to_date('200%-12-31.12:59:45', 'YYYY-MM-DD.HH24:MI:SS');
 
Cette requête ne marche pas : ORA-01843 : not a valid month
 
Une idée ?
 
Merci


Message édité par schumacher le 08-08-2005 à 17:09:51
n°25698
cruciforme
Artiste incompris
Posté le 08-08-2005 à 17:46:48  profilanswer
 

Les % c'est avec des LIKE non?
 
edit: Enfin ça change pas grand chose un to_date sur un machin avec un % j'ai un doute.


Message édité par cruciforme le 08-08-2005 à 17:47:56
n°25701
schumacher
Posté le 08-08-2005 à 19:03:57  profilanswer
 

Oui c'est avec les LIKE les %.
 
Le but d'un TO_DATE c'est de transformer une chaîne en DATE.
 
Visiblement le % c'est juste pour le like et non les chaînes en général car là ça passe pas...
 
Une idée pour résoudre mon pb?

n°25777
cruciforme
Artiste incompris
Posté le 08-08-2005 à 22:54:16  profilanswer
 

Ben déjà imagine toi transformer une chaine avec un % en DATE, ça peut pas marcher.
 
Bon j'ai jamais fait d'oracle mais un truc genre  
select * from test where to_char(maDate, 'YYYY-MM-DD.HH24:MI:SS') LIKE '200%-12-31.12:59:45';
 
a plus de chance de marcher mais il y a peut être bien plus simple mais je sais pas t'aider plus [:taiste]

n°25780
schumacher
Posté le 08-08-2005 à 23:28:08  profilanswer
 

ok je vais tester ça demain
 
merci

n°25785
LostSoul
Manieur de hache
Posté le 09-08-2005 à 07:13:02  profilanswer
 

cruciforme ou ze astuce pourrie :D
 
Si tu veux comparer sur les dates je 'ai dit d'utiliser DATEDIFF c'est le seul moyen "propre" (évidemment ca va rallonger un peu le code). Tu peux aussi prendrre différentes portions d'une date. Avec la fonction TRUNC tu peux prendre des morceaux de date pour les tester individuellement
 
http://www.techonthenet.com/oracle [...] c_date.php
 
donc un truc genre WHERE TRUNC(maDate,'YYYY') LIKE '200%'


---------------
In Girum Imus Nocte Et Consumimur Igni
In-Wonderland - Blog - Start64
n°25856
schumacher
Posté le 09-08-2005 à 17:58:49  profilanswer
 

Merci cruciforme, j'y avais pas pensé mais ça marche bien.
 
Pour ce que je dois faire ça me suffit, je vais pas me prendre la tête.
 
Merci à toi et à LostSoul ;)


Aller à :
Ajouter une réponse