IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Requêtes MySQL Discussion :

Problème date BDD -> Sql


Sujet :

Requêtes MySQL

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut Problème date BDD -> Sql
    Bonjour,
    Voila j'ai un problème plutot conséquent.
    Je travaille sur une base de données qui est un peu ancienne qui est rempli par un formulaire simple. Sauf que dans ce formulaire il y a un champs date (qui est en fait un type texte dans la base de donnée) mais qui n'a pas toujours était traité correctement.
    C'est a dire qu'avant c'était un champs libre ou on pouvait écrire ce qu'on voulait. Je me trouve donc avec des dates du style: "Jeudi" ou "dimanche" ou "4112007" ou "4/12/2007".

    Bref comment je pourrais faire pour tester toutes mes dates (texte) selon la forme suivante: JJ/MM/AAAA et si ca correspond pas a ce format je transforme en 01/01/2007?

    Je vous remercie vraiment! Bonne journée.

  2. #2
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    D'abord, le format DATE standard SQL est 'AAAA-MM-JJ'.

    Selon ton SGBD, il est possible que la fonction CAST soit capable d'interpréter correctement plusieurs styles de dates. A essayer.

    Sinon, il faut chercher les fonctions de dates propres à ton SGBD dans sa documentation. Il existe en principe des fonctions de formatage de date et d'extraction de parties de dates (EXTRACT).
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut
    Oui oui, mais le problème c'est que ce n'est pas un type date! En fait elles sont rentrés dans la base de données en tant que type texte. Du coup toutes les fonctions sur les dates ne sont pas possibles :s

  4. #4
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Ben justement tu veux les transformer en vraie date non ?

    Tu crées une nouvelle colonne de format DATE, tu fais les requêtes UPDATE nécessaires à l'aide de fonctions de formatage de date et/ou d'expressions régulières, tu supprimes (ou renommes) la colonne actuelle des mauvaises dates puis tu renommes la nouvelle colonne comme l'ancienne.

    Sans le nom et la version de ton SGBD, difficile d'aider sur ce sujet car les différents SGBD ont poarfois des fonctions différentes pour traiter les dates. Idem pour les expressions régulières.

    Bref, suis les consignes données par les règles de ce forum.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Novembre 2009
    Messages
    64
    Détails du profil
    Informations personnelles :
    Localisation : France, Isère (Rhône Alpes)

    Informations forums :
    Inscription : Novembre 2009
    Messages : 64
    Par défaut
    Je suis sur Mysql v5.0.32.

    Mais en fait je veux pas créer une nouvelle table avec un type date (j'ai trop de page derrière qui utilise cette facon là, je me sent pas de reprendre toutes les pages pour changer la gestion des dates :s Quoique je pourrais dupliquer ma table date!!!! Oué ca me parait cool comme ca.
    Mais après comment je fais pour modifier toutes les valeurs d'un champs texte selon ce qu'il y est ecrit? ^o)

    Petit exemple:
    Ancien table date: 4/12/2007
    Nouvelle table date: 2007/12/04
    ou bien encore:
    Ancienne table: mercredi ()
    Nouvelle table date: 2007/01/01

    Voila j'espere que je me suis fais comprendre cette fois ci ^^

  6. #6
    Expert éminent
    Avatar de CinePhil
    Homme Profil pro
    Ingénieur d'études en informatique
    Inscrit en
    Août 2006
    Messages
    16 818
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 62
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations professionnelles :
    Activité : Ingénieur d'études en informatique
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2006
    Messages : 16 818
    Billets dans le blog
    14
    Par défaut
    Un exemple de ce qu'il est possible de faire avec une des fonctions de date de MySQL :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    SELECT STR_TO_DATE('4/12/2007', '%e/%m/%Y')
    Résultat : 2007-12-04

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    UPDATE taTable
    SET taColonneDate = STR_TO_DATE(taColonneDate, '%e/%m/%Y')
    WHERE taColonneDate LIKE '%/%/%'
    Le LIKE peut être à remplacer par un REGEXP.
    Il vaut mieux tester quelles dates seraient modifiées avec un SELECT avant de lancer l'UPDATE pour vérifier qu'il ne traduise pas mal certaines dates.
    C'est pour ça que je préconisais l'ajout d'une nouvelle colonne de dates pour ne pas casser l'ancienne tout de suite.
    Philippe Leménager. Ingénieur d'étude à l'École Nationale Supérieure de Formation de l'Enseignement Agricole, en retraite... mais toujours Autoentrepreneur à l'occasion.
    Mon ancien blog sur la conception des BDD, le langage SQL, le PHP... et mon nouveau blog sur les mêmes sujets.
    « Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément ». (Nicolas Boileau)
    À la maison comme au bureau, j'utilise la suite Linux Mageïa !

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Problème date type france formulaire et type anglais sql
    Par bobosh dans le forum Requêtes et SQL.
    Réponses: 7
    Dernier message: 07/08/2008, 07h52
  2. [C++B5]Problème avec une requëte SQL sur BDD ACCESS
    Par Sleeping Lionheart dans le forum C++Builder
    Réponses: 7
    Dernier message: 22/04/2008, 09h03
  3. [SQL] problème update bdd
    Par ph_anrys dans le forum PHP & Base de données
    Réponses: 4
    Dernier message: 07/06/2007, 17h59
  4. Problème date avec SQL
    Par langelot222 dans le forum Requêtes et SQL.
    Réponses: 2
    Dernier message: 25/04/2007, 09h45
  5. Réponses: 13
    Dernier message: 27/12/2006, 17h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo