Précédent   Forum des professionnels en informatique > Bases de données > MySQL > SQL Procédural
SQL Procédural Forum d'entraide sur les triggers, les procédures stockées et les fonctions en MySQL
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 27/09/2007, 16h18   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 61
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : avril 2006
Messages : 61
Points : 11
Points : 11
Par défaut Un petit souci avec les dates

Bonjour, j'ai un petit problème avec l'insertion dans une base MySQL de champs date.

Je traite un fichier xml afin d'insérer les champs dans ma DB.
Dans ce fichier, la date est au format français (JJ/MM/AAAA).
Je voudrai la transformer au format (YYYY-MM-DD) afin de l'insérer dans un champ "date".

Est-il possible d'effectuer la transformation directement dans la requete MySQL "INSERT INTO"?

Merci par avance pour votre aide.
Ben-o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 16h21   #2
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par Ben-o Voir le message
Bonjour, j'ai un petit problème avec l'insertion dans une base MySQL de champs date.

Je traite un fichier xml afin d'insérer les champs dans ma DB.
Dans ce fichier, la date est au format français (JJ/MM/AAAA).
Je voudrai la transformer au format (YYYY-MM-DD) afin de l'insérer dans un champ "date".

Est-il possible d'effectuer la transformation directement dans la requete MySQL "INSERT INTO"?

Merci par avance pour votre aide.
Il faut que tu puisses découper pour le remplacer dans le format date de Mysql. Sinon il faut faire une fonction pour le remettre en place. Dans les astuce de mysql présent en haut de se forum j'ai fais une prod stock (si tu es sur Mysql5) elle te permet de spliter. En gros

CALL Split('20/12/2007','/');
SELECT * FROM t_split;
idItem | Item
1 | 20
2 | 12
3 | 2007
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 16h29   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 61
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : avril 2006
Messages : 61
Points : 11
Points : 11
Merci pour ta réponse, mais je ne sais pas comment mettre cela en place concrètement.

Ma requete est de ce type:

Code :
mysql_query("INSERT INTO t_maison VALUES ('', '$date_offre[1]');")
Peux-tu me donner une piste?
Ben-o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 16h32   #4
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 61
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : avril 2006
Messages : 61
Points : 11
Points : 11
Je viens de trouver ceci:

Fonction à utiliser : STR_TO_DATE(str,format)

INSERT INTO maTable
(monChamp)
VALUES
(STR_TO_DATE(maChaine, '%m/%d/%Y %h:%i:%s %p'));


J'essaye...
Ben-o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 16h36   #5
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par Ben-o Voir le message
Merci pour ta réponse, mais je ne sais pas comment mettre cela en place concrètement.

Ma requete est de ce type:

Code :
mysql_query("INSERT INTO t_maison VALUES ('', '$date_offre[1]');")
Peux-tu me donner une piste?
T'es sur PHP ? T'as pas honte ? c'est encore plus simple.
En Php il y a des fonctions qui peut t'arranger cela.

implode('/',array_reverse(Explode($date_offre[1])))

Tente moi ça
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 16h58   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 61
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : avril 2006
Messages : 61
Points : 11
Points : 11
Je viens d'essayer, et j'ai cette erreur:

Column 'date_offre' cannot be nullErreur lors de l'insertion ds la table t_maison

Pourtant j'ai bien une date dans mon fichier xml.
Ben-o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 17h13   #7
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Tu as utilisé qu'elle fonction ? celle que tu as trouvé ou celle en php?
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 17h21   #8
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 61
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : avril 2006
Messages : 61
Points : 11
Points : 11
Celle en php! je t'ai écouté, j'ai tenté.
Ben-o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 17h26   #9
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
Citation:
Envoyé par Ben-o Voir le message
Celle en php! je t'ai écouté, j'ai tenté.
Ha je crois que j'ai fais une erreur.

Code :
1
2
 
implode('-',array_reverse(Explode('/', $date_offre[1])))
1- Je convertie une chaine en tableau sur le séparateur "/" donc 20/12/2007 =>
[0][20]
[1][12]
[2][2007]

2 - J'inverse
[0][2007]
[1][12]
[2][20]

3 - explode 2007-12-20
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 17h43   #10
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 61
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : avril 2006
Messages : 61
Points : 11
Points : 11
Mince, j'ai toujours la même erreur, c'est bizarre

En tout cas, merci pour ton aide

Voila l'ensemble de ma requete:

Code :
mysql_query("INSERT INTO t_maison VALUES ('', '$type_offre[1]', '$NO_ASP[1]', '$id_mandat', 'implode('-',array_reverse(explode('/',$date_offre[1])))', 'implode('-',array_reverse(explode('/',$date_modif[1])))', '$prix[1]', '', '$depot_garantie[1]', '$taxe_fonciere[1]', '$cp_internet[1]', '".addslashes($ville_intenet[1])."', '$id_secteur', '$id_categorie', '$nb_pieces[1]', '$nb_chambres[1]', '$surf_hab[1]', '$surf_carrez[1]', '$surf_sejour[1]', '$surf_terrain[1]', '$nb_etages[1]', '$annee_cons[1]', '$id_cuisine', '$nb_sdb[1]', '$nb_se[1]', '$garage_box[1]', '$nb_caves[1]', '$id_chauffage', '$ascenseur[1]' , '$balcon[1]', '$terrasse[1]', '$piscine[1]', '$murs_mitoyens[1]', '$facade_terrain[1]', '".addslashes($texte_fr[1])."', '".addslashes($texte_uk[1])."', '".addslashes($texte_sp[1])."', '".addslashes($texte_ger[1])."', '$rs_agence[1]', '$tel_agence[1]', '$mail_agence[1]', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '$prestige[1]', '','');")OR die (mysql_error()."Erreur lors de l'insertion ds la table t_maison.");
Ne serait-ce pas un problème avec les simples quotes?
Ben-o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 18h20   #11
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 61
Détails du profil
Informations personnelles :
Âge : 31

Informations forums :
Inscription : avril 2006
Messages : 61
Points : 11
Points : 11
C'est bon , ça fonctionne, il y avait un problème de syntaxe, voici la requete modifiée:

Code :
mysql_query("INSERT INTO t_maison VALUES ('', '$type_offre[1]', '$NO_ASP[1]', '$id_mandat', '".implode('-',array_reverse(explode('/',$date_offre[1])))."', '".implode('-',array_reverse(explode('/',$date_modif[1])))."', '$prix[1]',...
Merci encore pour ton aide!
Ben-o est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 27/09/2007, 18h42   #12
Expert Confirmé
 
Avatar de berceker united
 
Développeur informatique
Inscription : février 2005
Messages : 2 982
Détails du profil
Informations personnelles :
Localisation : France, Paris (Île de France)

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : février 2005
Messages : 2 982
Points : 3 567
Points : 3 567
De rien
Tu peux mettre "Résolu" maintenant
__________________
Mon avatar ? Ce n'est rien, c'est juste la tête que je fais lorsque je vois un code complètement frappa dingue !...
berceker united est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h04.


 
 
 
 
Partenaires

Hébergement Web