Problème de format date

cs_Herminator Messages postés 34 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 11 février 2008 - 1 avril 2005 à 12:11
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 - 2 avril 2005 à 11:11
Bonjour à tous,

J'ai fais une connection en ADO sur un fichier .mdb (access97).

J'ai un problème pour extraire la date la plus récente dans une table.

Le champ date à été enregistrer en format texte sous la forme "mm/jj/aa hh:mm:ss".

Lorsque je fais " Max(date)" : il mélange les jours et les mois.

Lorsque je fais "Max(CDate(date))" : il me renvoi "14/02/2037" ???



Je pense qu'il s'agit d'un problème de format de date. Mais comment reformater le texte en format "jj/mm/aaaa" ?

3 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
1 avril 2005 à 14:24
Salut
Essaye avec DateValue(taDate) ou Format(taDate, "dd/mm/yyyy")
Fais attention avec les champs qui utilisent des mots clés de langage : 'date' n'est pas recommandé

Vala
Jack
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
0
cs_Herminator Messages postés 34 Date d'inscription jeudi 4 novembre 2004 Statut Membre Dernière intervention 11 février 2008
1 avril 2005 à 15:27
J'ai réussi à trouver une parade pour ressortir la valeur max en
mettant la date dans l'ordre "yymmdd", car j'ai l'impression que le
système considère la date comme un nombre au lieu de l'interprêter en
date (??? bizarre).

J'ai essayé tes 2 fonction de 'DateValue' et 'Format', le format
dd/mm/yy est correct, mais le résultat de la valeur max est faux.

Voici donc la commande que j'utilise, (le format de date du départ
étant de la forme " mm/jj/aa hh:mm:ss") pour convertir au format
"aammjj"



"Max(Right(Left(Trim(date),8),2) & Left(Trim(date),2) & Right(Left(Trim(date),5),2)) "



S'il existe une fonction plus simple, je suis preneur !!!



Merci quand même du coup de main !
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 21
2 avril 2005 à 11:11
Salut, si je comprend bien, tes dates ne sont pas stockées dans un champ de type date mais de type string ?
Dans ce cas, max() compare du texte et trouvera que "04/02/04....." est supérieur à "04/01/05.....".
Donc ta solution est bonne, quoique plutôt que d'utiliser des right(left()), utilise mid$(), le temps d'exécution sera un plus court :

MAX(Mid$(Trim(MyDate), 7, 2) & Mid$(Trim(MyDate), 1, 2) & Mid$(Trim(MyDate), 4, 2))

Le trim n'est là qu'au cas où mais s'il n'y a pas d'espaces avant et après, tu peux résumer à :

MAX(Mid$(MyDate, 7, 2) & Mid$(MyDate, 1, 2) & Mid$(MyDate, 4, 2))

Loup Gris
0
Rejoignez-nous