Précédent   Forum des professionnels en informatique > Bases de données > Oracle > SQL
SQL Forum d'entraide sur le SQL pour Oracle
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 24/06/2008, 17h30   #1
Invité de passage
 
Inscription : mai 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 31
Points : 4
Points : 4
Par défaut Modification format date Oracle

Bonjour à tous et merci par avance à ceux qui vont me lire,

Lors d'un appel à un *.sql depuis un shell unix, je passe quelques paramètres. Certains de ces paramètres sont des dates.

Je les récupère dans le *.sql sous forme &1, &2, ...

Le problème c'est que &1 = '200701'

Et j'aimerai transformer le format de cette date en dd/mm/yyyy afin de pouvoir la comparer avec le champ d'une table oracle.

Ma question donc : comment passer ma variable &1 du format yyyy/mm à dd/mm/yyyy ?

J'ai tenté to_date('&1','dd//mm/yyyy) mais cela ne fonctionne pas.

Si quelqu'un a une idée , je suis preneur.
Merci beaucoup.
tonio45312 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 17h38   #2
Membre éprouvé
 
Avatar de miloux32
 
Inscription : juillet 2003
Messages : 538
Détails du profil
Informations forums :
Inscription : juillet 2003
Messages : 538
Points : 473
Points : 473
Citation:
Envoyé par tonio45312 Voir le message

J'ai tenté to_date('&1','dd//mm/yyyy) mais cela ne fonctionne pas.
Si tu l'as tenté avec cette syntaxe c'est normal.
Deuxiemement tu lui dis de lire une date qui est au format "dd/mm/yyyy" ce qui n'est pas vrai ...

Tu n'as juste qu'a faire :
et là tu obtiendras un objet de type date.
Le champ avec le lequel tu veux le comparer est de type date ? tu peux faire la comparaison avec ca !

Si non, si c'est une chaine , récupere et formate ta chaine :

Code :
to_char(to_date('&1','yyyymm'),'dd/mm/yyyy')
si bien sur ta chaine est au format (dd/mm/yyyy) [ce qui serait tres bete pour une une chaine ]
__________________
C'est pas parce que ca marche que c'est bon!!
Pensez au bouton "Résolu"
Je ne réponds pas en privé aux questions
miloux32 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 17h40   #3
Membre expérimenté
 
Inscription : juillet 2007
Messages : 495
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations forums :
Inscription : juillet 2007
Messages : 495
Points : 585
Points : 585
ta variable &1 contient 6 caractères sans slash, donc dans ton to_date, tu dois spécifier dans l'ordre à quoi correspondent ces 6 caractères (DD, MM ou YY car à priori ton année est sur 2 car.), et donc sans slash.
Par exemple : DDMMYY signifie dans ton cas qu'il doit comprendre 20 juillet 2001, alors DDYYMM signifie 20 janvier 2007.

Sinon, tu peux aussi envisager de faire un to_char sur la colonne à comparer de ta table Oracle, en respectant évidemment le format de ta variable &1
__________________
Des chercheurs qui cherchent, on en trouve, mais des chercheurs qui trouvent, on en cherche !
dgi77 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 18h02   #4
Invité de passage
 
Inscription : mai 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 31
Points : 4
Points : 4
miloux32,

Le champ avec lequel je veux comparer est en effet de type date dd/mm/yyyy !
tonio45312 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 24/06/2008, 18h08   #5
Invité de passage
 
Inscription : mai 2008
Messages : 31
Détails du profil
Informations forums :
Inscription : mai 2008
Messages : 31
Points : 4
Points : 4
La comparaison ne semble pas fonctionner.
Lorsqu'il compare du 'yyyymm' avec du 'dd/mm/yyyy', cela va matcher même si l'information concernant le 'dd' est absente ??
tonio45312 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 25/06/2008, 23h10   #6
Invité de passage
 
Inscription : décembre 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : décembre 2007
Messages : 8
Points : 4
Points : 4
to_date('&1','yyyymm') renvoie une date au 01/MM/YYYY
La comparaison entre ce to_date et ton champ DATE doit en tenir compte.
Si toutes tes DATE ne correspondent pas au premier jour du mois tu n'auras que trés peu de résultat.

Quel est le format de &1 ?
Quel test souhaite-tu faire entre &1 et tes champs DATE ?
HLM59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 18h03.


 
 
 
 
Partenaires

Hébergement Web