La moitié des champs dates sont mals formatés
blackmefias_3350 Messages postés 710 Date d'inscription Statut Membre Dernière intervention -
Bonjour,
je rencontre un soucis dans une exactraction d'une base mysql.
Pour le contexte, j'ai récupéré une base de données et avec celle ci j'ai réalisé un programme afin d'extraire des données en fonction de certains critères.
J'ai plusieurs champs, dont 3 champs dates, dans une même table, toutefois il se passe un phénomène étrange:
pour les deux premiers champs dates, le jour et le mois sont inversés, alors que pour les deux derniers champs dates, la date est bien formaté:
et voici la structure de la table, concernant les dates :
SOLDE A DATE varchar(9) utf8_general_ci Oui NULL
DATE DE DEBUT varchar(10) utf8_general_ci Oui NULL
DATE DE FIN varchar(10) utf8_general_ci Oui NULL
DATE ENREGISTREMENT varchar(10) utf8_general_ci Oui NULL
et dans mon programme je fais un select tout simple :
select t1.identifiant, t1.date_de_debut, t1.date_de_fin, t1.date_enregistrement, ........ ........
le soucis c'est que j'ai déjà tenté de modifier la structure de la table, mais toutes les données s'en retrouvent chamboulées, comme je travaille en prep, j'ai recréé la table avec les données d'origine.
La base de données a été créé à partir d'export de fichier excel, il s'agit d'export de données d'un as400, je ne peux donc pas touché à la strucutre de la table.
Le problème c'est que je ne comprend pas pourquoi, dans deux champs dates, le jour et le mois sont inversés alors que pour les deux derniers champs dates, c'est ok, sachant que les 4 champs date ont la même structure.
Dans mon programme, j'ai tenté de faire la chose suivante dans ma requete :
date_format(.date_debut, '%d/%m/%Y')
mais ça ne change rien .
Merci pour vos lumières et votre aide.
Windows / Chrome 107.0.0.0
- La moitié des champs dates sont mals formatés
- Moitié a4 - Guide
- Nombre de jours entre deux dates excel - Guide
- Word mettre à jour tous les champs - Forum Word
- Echec mise à jour champs Word ✓ - Forum Word
- La date de livraison sera communiquée dès que possible. ups - Forum Vos droits sur internet
3 réponses
Bonjour
Dans une base de données MySQL, une date ça s'enregistre dans un champ de type date... Et non pas dans in varchar !!
Bonjour,
justement je n'ai pas eu le choix.
Ce n'est pas moi qui a créé la base de données,
Ils ont fait un export de plusieurs tables de l'as400, j'ai donc obtenu 3 fichiers excels. Lorsqu'ils ont créés la base de données, j'ai vu la structure et j'ai constaté que les champs dates étaient en varchar.
J'ai tenté, sur un champ date, de modifier le type en dateTime, mais toute la colonne a été remodelé et les données sont devenue incohérente, exemple :
Avant modification on a : 31/12/14
si je transforme le champ date en dateTIme j'ai un truc du genre :2031-12-14 00:00:00
Donc je ne peux pas modifier la structure de la table.
Ce que je ne comprend pas , c'est que lorsque je fais ma requete, la plupart des valeurs sont corrects, mais j'ai toujours une poignée de données, où le jour et le mois sont inversés ...
Merci
Cela n'a pas de sens d'utiliser date_format() sur un champ de type texte.
C'est peut-être dans Excel que la transformation non souhaitée a eu lieu.
Si tu as un champ texte dans lequel le mois et la date sont toujours inversé, penses-tu qu'il est difficile de corriger cela? Connais-tu les fonctions de manipulation de chaines de caractères?
Tu essaies une méthode foireuse et tu en déduis rapidement "je ne peux pas modifier la structure de la table".
Le plus logique, c'est de créer quatre nouveaux champs de type date, et d'y mettre les valeurs en utilisant la fonction date().
Bonjour,
En mettant la fonction DateTime il est normal d'avoir cet affichage 2031-12-14 00:00:00
car cette fonction s'écrit de cette façon :
=DATETIME([Année],[Mois],[Jour],[Heure],[Minute],[Seconde])
pour votre cas, il suffit de mettre DATE(dd,mm,yy) vous aurez ainsi la date à la française (Jour, Mois, Année)
par contre si vous voulez avoir l'année sur 4 chiffres, vous devrez faire comme ceci : DATE(dd,mm,yyyy).