[mysql4wd] Au secours les dates en datetime !

Le
Roumegou
Dans la famille "Sam Gonflinmax", je voudrais les dates sur mysql. Ca
fait 3
heures que je suis là dessus.

Je n'ai qu'une dll libmysql.dll (228ko) et mysql4wd est en version
1.5.5.4,
la base mySQL est 4.1

Je rencontre un pb de fonctionnement erratique avec des dates mysql si
j'utilise le format datetime.
Soit l'exemple de la table LESNEWS
CREATE TABLE LESNEWS ( NWS_ID int(8) NOT NULL auto_increment,
NWS_TITRE varchar(100) default NULL,
NWS_TYPE int(2) default NULL,
NWS_TEXT text,
NWS_URL varchar(100) default NULL,
NWS_PAGHTML varchar(100) default NULL,
NWS_CREE datetime default NULL,
NWS_VALIDE datetime default NULL,
NWS_EXPIRE date default NULL,
NWS_OWNER int(8) default NULL,
NWS_VALIDEPAR int(8) default NULL,
DATE_CREAT date default NULL,
LOGIN_CREAT varchar(10) default NULL,
DATE_MODIF date default NULL,
LOGIN_MODIF varchar(10) default NULL,
SRC_CREAT varchar(30) default NULL,
SRC_MODIF varchar(30) default NULL,
REF_IMPORT int(8) default NULL,
PRIMARY KEY (NWS_ID)
TYPE=InnoDB ROW_FORMAT=DYNAMIC COMMENT='Gestion de news'

et le bout de code suivant
log=""
imax=ChaîneOccurrence(commande,",")+1
lCurreq=2
SI fSQL:mySQLExec(commande,lCurreq)
fSQL:mySQLPremier(lCurreq)
SI PAS fSQL:mySQLEnDehors ALORS
POUR i=1 A imax //18
log+=fSQL:mySQLCol(lCurreq,i)+RC
FIN
FIN
SINON
fSQL:mySQLMsgBox(commande)
FIN
fSQL:mySQLFerme(lCurreq)

avec cette commande
commande="SELECT "+
"LESNEWS.NWS_CREE,"+
"LESNEWS.NWS_VALIDE,"+
"LESNEWS.NWS_EXPIRE,"+
"LESNEWS.DATE_CREAT "+
"FROM LESNEWS ORDER BY LESNEWS.NWS_ID"
cela donne ce résultat

2004-04-06 17:01:08
00000000 00:00:00
00000000
2004-04-06
Notez que le premier format datetime est conforme, pas le 2ème ni le
premier
format date, mais le dernier format date est conforme.
Si je rajoute des colonnes avant NWS_CREE, je peux obtenir quelque
chose de
correct. La seule combinaison que j'ai trouvée, c'est de mettre les
colonnes
NWS_URL et NWS_PAGHTML et là j'ai obtenu
test
test
2004-04-06 17:01:08
0000-00-00 00:00:00
0000-00-00
2004-04-06
Avec un seul champs, cela est incorrect.

Si j'enlève les champs datetime de la sélection, je n'ai plus de
comportements bizarres sur les dates.

Bref y'a un problème et je le tourne dans tous les sens depuis des
heures.
Je précise qu'il n'y a pas de pb avec l'accès natif Pcsoft qui retourne
toujours les dates sous forme YYYYMMDD ou YYYYMMDD HH:MM:SS

Avez vous ce comportement avec mysql4wd ?

Si vous pouvez tester, je peux aussi vous fournir une fenêtre de test.

--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
elecoest
Le #13418631
> Dans la famille "Sam Gonflinmax", je voudrais les dates sur mysql. Ca
fait 3 heures que je suis là dessus.



<joke>
3 heures !? t'es pas doué mon grand. Moi il m'a fallu 5 minutes pour faire
ton test
</joke>

Je n'ai qu'une dll libmysql.dll (228ko) et mysql4wd est en version



Déjà là je dirai que cela vient de ta libmysql qui n'est pas en corrélation
avec la dll de Rodolphe (voir les anciens posts à ce sujet)...

1.5.5.4,
la base mySQL est 4.1



MySQL : 4.0.18
libmysql.dll : 244 Ko
mysql4wd.dll : 1.5.5.4 60 Ko
classe : version 1.5.5.4

[CUT]
TYPE=InnoDB ROW_FORMAT=DYNAMIC COMMENT='Gestion de news'



Idem mais en MyISAM

et le bout de code suivant
[CUT]



Même bout de code

2004-04-06 17:01:08
00000000 00:00:00
00000000
2004-04-06



2004-04-06 17:46:52
2004-04-06 17:46:52
20040406
20040406

ou (avec des null et des 000000..)

2004-04-06 17:49:06
0000-00-00 00:00:00
null
null

[CUT]



Bref y'a un problème et je le tourne dans tous les sens depuis des
heures.
Je précise qu'il n'y a pas de pb avec l'accès natif Pcsoft qui retourne
toujours les dates sous forme YYYYMMDD ou YYYYMMDD HH:MM:SS

Avez vous ce comportement avec mysql4wd ?



Non la preuve ;-)

Emmanuel Lecoester



---
Outgoing mail is certified Virus Free.
Checked by AVG anti-virus system (http://www.grisoft.com).
Version: 6.0.618 / Virus Database: 397 - Release Date: 09/03/2004
Roumegou
Le #13418621
Merci beaucoup à Jacques pour la libmysql.dll de 240k0.
Cette dll semble avoir un comportement plus stable.
Stable mais pas vraiment logique non plus puisque les dates sont
retournées en YYYYMMDD et les datetime en YYYY-MM-DD HH:MM:SS

Mais au moins, elle les renvoie toujours de la meme façon.

rmq : L'accès natif PCSOFT lui renvoie toujours respectivement
YYYYMMDD et YYYYMMDD HH:MM:SS avec cette dll.

Je vais partir sur cette dll mais bon sang, j'ai perdu presque la
journée là dessus.
Pourquoi ce dysfonctionnement ? Je ne m'en était jamais aperçu avant
d'utiliser des datetime.
Je me demande qui pond ces dll ?? Cela fait deux fois que je me fais
avoir avec ces fmt de dates, mais là le comportement aléatoire chapeau
!




Roumegou avait énoncé :
Dans la famille "Sam Gonflinmax", je voudrais les dates sur mysql. Ca fait 3
heures que je suis là dessus.

Je n'ai qu'une dll libmysql.dll (228ko) et mysql4wd est en version 1.5.5.4,
la base mySQL est 4.1

Je rencontre un pb de fonctionnement erratique avec des dates mysql si
j'utilise le format datetime.
Soit l'exemple de la table LESNEWS
CREATE TABLE LESNEWS ( NWS_ID int(8) NOT NULL auto_increment,
NWS_TITRE varchar(100) default NULL,
NWS_TYPE int(2) default NULL,
NWS_TEXT text,
NWS_URL varchar(100) default NULL,
NWS_PAGHTML varchar(100) default NULL,
NWS_CREE datetime default NULL,
NWS_VALIDE datetime default NULL,
NWS_EXPIRE date default NULL,
NWS_OWNER int(8) default NULL,
NWS_VALIDEPAR int(8) default NULL,
DATE_CREAT date default NULL,
LOGIN_CREAT varchar(10) default NULL,
DATE_MODIF date default NULL,
LOGIN_MODIF varchar(10) default NULL,
SRC_CREAT varchar(30) default NULL,
SRC_MODIF varchar(30) default NULL,
REF_IMPORT int(8) default NULL,
PRIMARY KEY (NWS_ID)
TYPE=InnoDB ROW_FORMAT=DYNAMIC COMMENT='Gestion de news'

et le bout de code suivant
log=""
imax=ChaîneOccurrence(commande,",")+1
lCurreq=2
SI fSQL:mySQLExec(commande,lCurreq)
fSQL:mySQLPremier(lCurreq)
SI PAS fSQL:mySQLEnDehors ALORS
POUR i=1 A imax //18
log+=fSQL:mySQLCol(lCurreq,i)+RC
FIN
FIN
SINON
fSQL:mySQLMsgBox(commande)
FIN
fSQL:mySQLFerme(lCurreq)

avec cette commande
commande="SELECT "+...
"LESNEWS.NWS_CREE,"+...
"LESNEWS.NWS_VALIDE,"+...
"LESNEWS.NWS_EXPIRE,"+...
"LESNEWS.DATE_CREAT "+...
"FROM LESNEWS ORDER BY LESNEWS.NWS_ID"
cela donne ce résultat

2004-04-06 17:01:08
00000000 00:00:00
00000000
2004-04-06
Notez que le premier format datetime est conforme, pas le 2ème ni le premier
format date, mais le dernier format date est conforme.
Si je rajoute des colonnes avant NWS_CREE, je peux obtenir quelque chose de
correct. La seule combinaison que j'ai trouvée, c'est de mettre les colonnes
NWS_URL et NWS_PAGHTML et là j'ai obtenu
test
test
2004-04-06 17:01:08
0000-00-00 00:00:00
0000-00-00
2004-04-06
Avec un seul champs, cela est incorrect.

Si j'enlève les champs datetime de la sélection, je n'ai plus de
comportements bizarres sur les dates.

Bref y'a un problème et je le tourne dans tous les sens depuis des heures.
Je précise qu'il n'y a pas de pb avec l'accès natif Pcsoft qui retourne
toujours les dates sous forme YYYYMMDD ou YYYYMMDD HH:MM:SS

Avez vous ce comportement avec mysql4wd ?

Si vous pouvez tester, je peux aussi vous fournir une fenêtre de test.



--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Roumegou
Le #13418611
Salut Manu

Le 06/04/2004, elecoest a supposé :
Dans la famille "Sam Gonflinmax", je voudrais les dates sur mysql. Ca
fait 3 heures que je suis là dessus.



<joke>
3 heures !? t'es pas doué mon grand. Moi il m'a fallu 5 minutes pour faire
ton test
</joke>



T'es vraiment pas charitable de te moquer ;-)

Quand tu fais un test avec une requete, cela te renvoie un résultat
d'une façon; tu rajoutes des colonnes qui n'ont rien à voir et le
résultat est différent.


Je n'ai qu'une dll libmysql.dll (228ko) et mysql4wd est en version



Déjà là je dirai que cela vient de ta libmysql qui n'est pas en corrélation
avec la dll de Rodolphe (voir les anciens posts à ce sujet)...




Oui, et j'avais déjà fait le ménage des libmysql pour ne conserver que
celle ci. Tout se passe bien tant que tu ne met pas des datetime et
encore pas n'importe où.
Bref le piège à con ... tout à fait pour moi quoi ;(
1.5.5.4,
la base mySQL est 4.1




erreur, c'était une 4.0.14. D'ailleurs je me tâte pour passer en 4.1
qui tarde à passer en prod à mon goût (vivement les requêtes
imbriquées).

[HS]
A ce propos, je fais des formations en Oracle 9i en ce moment; ce qui
m'a permis de remettre à jour mes connaissances et de voir avec plaisir
qu'oracle suivait enfin le standard SQL99 pour les jointures depuis la
9.
Par contre, j'ai voulu utiliser les types abstraits. C'est nul et
ORACLE NE suit pas la norme SQL3.
[HS]
[CUT]
Avez vous ce comportement avec mysql4wd ?



Non la preuve ;-)


[CUT]

Ben forcément avec la bonne dll ;-)

Emmanuel Lecoester



--
Eric Roumegou
http://cerbermail.com/?TSoulBerPA
(cliquez sur le lien ci-dessus pour me contacter en privé)
Publicité
Poster une réponse
Anonyme