OVH Cloud OVH Cloud

[WD7.5] Oracle4WD conversion de date

7 réponses
Avatar
Pierre
Bonjour,
J'ai une requette sous Oracle (avec Oracle4WD) qui doit me retourmer une
date dans un champ(champ date bien sur) mais le format n'est pas correcte.
Comment retourner le bon format ?
Voici ma requette merci de votre aide


LOCAL
retCode is boolean
retCode = Oracle4WD:mySQLExec("select date from TABcommande", 6)
SI retCode ALORS
Oracle4WD:mySQLPremier(6)
TANTQUE PAS Oracle4WD:mySQLEnDehors
dir_date= Oracle4WD:mySQLLitCol(6,1)
Oracle4WD:mySQLSuivant(6)
FIN
FIN
Oracle4WD:mySQLFerme(6)

_________________________________________________________________

affichage de dir_date = 00/00/0063 (qui est un champ date)

7 réponses

Avatar
Manu
"Pierre" wrote in message
news:41e254ff$0$7122$
Bonjour,
J'ai une requette sous Oracle (avec Oracle4WD) qui doit me retourmer une
date dans un champ(champ date bien sur) mais le format n'est pas correcte.
Comment retourner le bon format ?



en faisant un
Oracle4WD:mySQLExec("alter session set nls_date_format = 'YYYYMMDD'", 1)
et en mettant les champs de type date avec un format AAAAMMJJ (valeur
retournée).

Voici ma requette merci de votre aide


LOCAL
retCode is boolean
retCode = Oracle4WD:mySQLExec("select date from TABcommande", 6)
SI retCode ALORS
Oracle4WD:mySQLPremier(6)
TANTQUE PAS Oracle4WD:mySQLEnDehors
dir_date= Oracle4WD:mySQLLitCol(6,1)
Oracle4WD:mySQLSuivant(6)
FIN
FIN
Oracle4WD:mySQLFerme(6)

_________________________________________________________________

affichage de dir_date = 00/00/0063 (qui est un champ date)




Avatar
Pierre
Ca fonctionne super bien.
je vous remercie pour cette aide rapide.
j'en profite pour vous souhaiter une bonne année.

Merci

"Manu" a écrit dans le message de
news:crtl1s$4b2$

"Pierre" wrote in message
news:41e254ff$0$7122$
> Bonjour,
> J'ai une requette sous Oracle (avec Oracle4WD) qui doit me retourmer une
> date dans un champ(champ date bien sur) mais le format n'est pas


correcte.
> Comment retourner le bon format ?

en faisant un
Oracle4WD:mySQLExec("alter session set nls_date_format = 'YYYYMMDD'", 1)
et en mettant les champs de type date avec un format AAAAMMJJ (valeur
retournée).

> Voici ma requette merci de votre aide
>
>
> LOCAL
> retCode is boolean
> retCode = Oracle4WD:mySQLExec("select date from TABcommande", 6)
> SI retCode ALORS
> Oracle4WD:mySQLPremier(6)
> TANTQUE PAS Oracle4WD:mySQLEnDehors
> dir_date= Oracle4WD:mySQLLitCol(6,1)
> Oracle4WD:mySQLSuivant(6)
> FIN
> FIN
> Oracle4WD:mySQLFerme(6)
>
> _________________________________________________________________
>
> affichage de dir_date = 00/00/0063 (qui est un champ date)
>
>




Avatar
Roumegou Eric
Après mure réflexion, Manu a écrit :
"Pierre" wrote in message
news:41e254ff$0$7122$
Bonjour,
J'ai une requette sous Oracle (avec Oracle4WD) qui doit me retourmer une
date dans un champ(champ date bien sur) mais le format n'est pas correcte.
Comment retourner le bon format ?



en faisant un
Oracle4WD:mySQLExec("alter session set nls_date_format = 'YYYYMMDD'", 1)
et en mettant les champs de type date avec un format AAAAMMJJ (valeur
retournée).



oui en oracle on est heureux de pouvoir faire cela. au moins on a plus
de surprises.
Ce n'est pas le cas avec mysql qui change à chaque version de la
libmysql.dll.

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Daniel
Roumegou Eric writes:

Après mure réflexion, Manu a écrit :
> "Pierre" wrote in message
> news:41e254ff$0$7122$
>> Bonjour,
>> J'ai une requette sous Oracle (avec Oracle4WD) qui doit me retourmer u ne
>> date dans un champ(champ date bien sur) mais le format n'est pas corre cte.
>> Comment retourner le bon format ?
>
> en faisant un
> Oracle4WD:mySQLExec("alter session set nls_date_format = 'YYYYMMDD'", 1)
> et en mettant les champs de type date avec un format AAAAMMJJ (valeur
> retournée).
>
oui en oracle on est heureux de pouvoir faire cela. au moins on a plus
de surprises.
Ce n'est pas le cas avec mysql qui change à chaque version de la
libmysql.dll.



A priori à partir de 4.1.1, je crois (pas testé) qu'on peut faire
quelque chose qui se rapproche.

Get_format()

http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html


--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
Roumegou Eric
Le 10/01/2005, Daniel a supposé :
Roumegou Eric writes:

Après mure réflexion, Manu a écrit :
"Pierre" wrote in message
news:41e254ff$0$7122$
Bonjour,
J'ai une requette sous Oracle (avec Oracle4WD) qui doit me retourmer une
date dans un champ(champ date bien sur) mais le format n'est pas correcte.
Comment retourner le bon format ?



en faisant un
Oracle4WD:mySQLExec("alter session set nls_date_format = 'YYYYMMDD'", 1)
et en mettant les champs de type date avec un format AAAAMMJJ (valeur
retournée).



oui en oracle on est heureux de pouvoir faire cela. au moins on a plus
de surprises.
Ce n'est pas le cas avec mysql qui change à chaque version de la
libmysql.dll.



A priori à partir de 4.1.1, je crois (pas testé) qu'on peut faire
quelque chose qui se rapproche.

Get_format()

http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html



Attention, cela ne définit pas le fmt de la date pour la session (comme
ce qui était donné par
Manu) mais formate la date dans un select.

En correspondance Oracle, ce serait un TO_CHAR.
Pour revenir à mySql, et les différentes versions de dates que peuvent
proposer les clients mysql (libmysql.dll, je travaille comme cela
maintenant :
j'ai une proc qui teste le fmt de date et remplit 2 var globales.
Ensuite je travaille selon ces var globales.


PROCEDURE InitgFmtDate()
commande est une chaîne
fmtdate,fmtdatetime sont des chaînes
lCurReq est un entier
chretour est chaîne =""
commande="select current_date(),current_timestamp()"
lCurReq=1
SI fSQL:mySQLExec(commande,lCurReq)
fSQL:mySQLPremier(lCurReq)
SI PAS fSQL:mySQLEnDehors ALORS
fmtdate=fSQL:mySQLCol(lCurReq,1)
fmtdatetime=fSQL:mySQLCol(lCurReq,2)
FIN
SINON
fSQL:mySQLMsgBox(commande)
FIN
fSQL:mySQLFerme(lCurReq)
SI Milieu(fmtdate,5,1)="-" ALORS
gFmtDate="YYYY-MM-DD"
SINON
gFmtDate="YYYYMMDD"
FIN
SI Milieu(fmtdatetime,5,1)="-" ALORS
gFmtDateTime="YYYY-MM-DD HH:MM:SS"
SINON
gFmtDateTime="YYYYMMDD HH:MM:SS"
FIN

RENVOYER chretour

--
Eric Roumégou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Avatar
Daniel
Roumegou Eric writes:


> A priori à partir de 4.1.1, je crois (pas testé) qu'on peut faire
> quelque chose qui se rapproche.
>
> Get_format()
>
> http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html

Attention, cela ne définit pas le fmt de la date pour la session
(comme ce qui était donné par
Manu) mais formate la date dans un select.



Nous sommes d'accord Eric, c'est lorsque j'ai vu le Thread sous Oracle
que j'ai fait une recherche sur Mysql (car il n'y a pas à dire ce type
de variable sous Oracle c'est sympa).

Dans la doc sur Get_format, il est indiqué que Get_format parmet de
récupérer le format (date ou heure), en fonction des constantes
"USA",etc...
Ensuite elle indique d'aller voir le chapitre SET, qui lui permet de
définir tel ou tel variable du moteur, client, en global ou session.

Le problème (la raison du je crois), c'est que l'aide ne dit pas le
nom de variable....

N'ayant pas de 4.1.X d'installer , je n'ai pas fait de show variables,

...
...

Je viens d'installer la version 4.1.8 sous W2K.
en faisant un show variables....

Bonne surprise, il y a la variable datetime_format
à voir si elle est paramétrable en global ou session et hop le tour
est joué.

Bon je retourne sur la 4.0.23...


--
suivre ce lien pour répondre:
http://cerbermail.com/?2KrV3YZXnn
Daniel
;-)
Avatar
jacques.trepp
Daniel avait énoncé :
Roumegou Eric writes:


A priori à partir de 4.1.1, je crois (pas testé) qu'on peut faire
quelque chose qui se rapproche.

Get_format()

http://dev.mysql.com/doc/mysql/en/Date_and_time_functions.html



Attention, cela ne définit pas le fmt de la date pour la session
(comme ce qui était donné par
Manu) mais formate la date dans un select.



Nous sommes d'accord Eric, c'est lorsque j'ai vu le Thread sous Oracle
que j'ai fait une recherche sur Mysql (car il n'y a pas à dire ce type
de variable sous Oracle c'est sympa).

Dans la doc sur Get_format, il est indiqué que Get_format parmet de
récupérer le format (date ou heure), en fonction des constantes
"USA",etc...
Ensuite elle indique d'aller voir le chapitre SET, qui lui permet de
définir tel ou tel variable du moteur, client, en global ou session.

Le problème (la raison du je crois), c'est que l'aide ne dit pas le
nom de variable....

N'ayant pas de 4.1.X d'installer , je n'ai pas fait de show variables,

...
...

Je viens d'installer la version 4.1.8 sous W2K.
en faisant un show variables....

Bonne surprise, il y a la variable datetime_format
à voir si elle est paramétrable en global ou session et hop le tour
est joué.

Bon je retourne sur la 4.0.23...



bonjour ,
en 4.1.7, un show variables fait apparaitre :
date_format = %Y-%m-%d
datetime_format = %Y-%m-%d %H:%i:%s

et la requète : set date_format = '%Y%m%d'
fonctionne apparemment.
cool :')

--
Jacques Trepp
Albygest