Partage
  • Partager sur Facebook
  • Partager sur Twitter

problème date php mysql

    1 août 2010 à 14:36:16

    Bonjour à tous,
    Voilà j'ai un petit problème, en fait je récupère une date sous la forme jj//mm/aaaa grace à un champ de type text
    <input type="text" name="daterecup">
    Cependant, je souhaite stocker cette date dans une base de données,j'ai donc utilisé un type varchar(10)mais je viens de m'apercevoir qu'en faisant un tri dessus, le tri est incorrect, je le pensais correct car il triait bien sur le jour mais il ne trie pas sur les mois, ni sur les années (ce qui est assez logique vue que ce n'est pas une date).
    Je voudrais savoir si il y avait un moyen de modifier la structure de ma table, de mettre le champ au format date, tout en modifiant la date du champ pour qu'elle soit bien une date.
    J'espère que ce que je raconte est compréhensible.N'hésitez pas à me demander si ce n'est pas le cas.

    Merci d'avance, j'ai lu beaucoup de questions dessus,mais ça ne correspond pas à ce que je souhaite obtenir.
    • Partager sur Facebook
    • Partager sur Twitter
      1 août 2010 à 15:12:56

      Salut,

      J'ai peut-être une solution à te proposer, peut-être il y a-t-il mieux mais ça fonctionne.
      UPDATE table SET date = CONCAT(SUBSTR(date, 7),'-', SUBSTR(date, 4, 5), '-', SUBSTR(date, 1, 2))
      

      Cette requête va inverser le format de tes dates au format VARCHAR2.
      Si une date est de la forme "JJ/MM/AAAA", alors après la requête elle sera de la forme : "AAAA-MM-JJ".

      Ensuite il te suffit de changer le format de la colonne en DATE.

      (Fais une copie de ta table au cas où).
      • Partager sur Facebook
      • Partager sur Twitter
        1 août 2010 à 15:38:14

        Est ce qu'il y aurait pas un moyen plutot de modifier la date en php, pour qu'elle reste quand meme au format jj/mm/aaaa mais qu'elle soit au format date dans la table sql??

        Je souhaiterais que ma table contienne plusieurs champs (qui n'ont aucun lien avec la date) et un champ date_depot de type date, qui contient la date récupérée via le formulaire
        • Partager sur Facebook
        • Partager sur Twitter
          1 août 2010 à 19:29:43

          Salut,

          Avec un STR_TO_DATE ? Exemple :

          SELECT STR_TO_DATE('01/08/2010', '%d/%m/%Y') AS date;
          


          Ca donne une date dans le format YYYY-MM-JJ en fonction de la date que tu lui as donné.
          • Partager sur Facebook
          • Partager sur Twitter
            1 août 2010 à 19:38:41

            dans ma table sql je peux pas stocker la date au format jj/mm/aaaa ?
            je n'ai pas trop compris ton message, désolé je suis débutant.
            Quand je récupère la date avec mon formulaire, est ce que je peux faire insert matable(ma_date) values (str-to-date($date_recupere)
            ou c'est pas du tout comme ça?
            • Partager sur Facebook
            • Partager sur Twitter
              1 août 2010 à 19:57:32

              Si, tu peux la stocker au format jj/mm/aaaa mais c'est plus pratique si tu la stockes au format AAAA-MM-JJ. Comme ça quand tu récupéreras ta colonne date tu auras toute une panoplie de fonctions pour utiliser tes dates. Je te renvoie sur ce lien qui détaille quelques fonctions sur les dates.

              Sinon il faut que tu précises le format dans lequel tu as ta date récupérée. Par exemple si tu as une date au format MM/JJ/AAAA il faudra que tu indiques ce format dans ton 2ème paramètre de la fonction STR_TO_DATE. Mais ton format c'est JJ/MM/AAAA donc il faut que tu mettes ça dans ton VALUES (la date du 1er août est un exemple, il suffira de mettre ta variable) :

              STR_TO_DATE('01/08/2010', '%d/%m/%Y')
              
              • Partager sur Facebook
              • Partager sur Twitter
                1 août 2010 à 20:06:18

                si je fais ce que tu as écris, que je mette dans le values
                STR_TO_DATE('$ma_variable', '%d/%m/%Y')
                est ce que je pourrais par la suite, récupérer les dates de ma table en les classant par ordre croissant ou décroissant?car tu me dis que le format en anglais est plus simple pour l'utilisation de fonctions et moi mon but est de les récupérer ensuite par ordre décroissante.

                merci à tous pour votre aide
                • Partager sur Facebook
                • Partager sur Twitter
                  1 août 2010 à 20:17:10

                  Stocke-la au bon format, c'est la seule solution non stupide.
                  • Partager sur Facebook
                  • Partager sur Twitter
                    1 août 2010 à 20:42:45

                    ben c'est dans le cadre d'un projet et je dois stocker la date dans le format jj/mm/aaaa sinon je ne me prendrais pas autant la tete..;
                    :-(
                    • Partager sur Facebook
                    • Partager sur Twitter
                      1 août 2010 à 20:49:41

                      Tu as très certainement mal compris ton projet. C'est impossible qu'on te demande de stocker une date dans un VARCHAR, on doit te demander simplement de l'afficher au format JJ/MM/YYYY. Dans ce cas-ci, stocke-la correctement dans une colonne de type DATE et utilise DATE_FORMAT pour la mettre au bon format lorsque tu sélectionnes la colonne.
                      • Partager sur Facebook
                      • Partager sur Twitter
                        1 août 2010 à 20:55:40

                        on ne m'a pas demandé de la stocker au format varchar, c'est moi qui l'ait stocké comme ça,ce qui était une erreur de ma part, car je pensais que je n'aurais pas besoin de trier la date par ordre croissant ou décroissant par exemple.
                        J'essaye donc de rattraper mon erreur et de mettre le champ de ma table au format date, mais pour cela quand je récupère ma date à l'aide de mon formulaire, je voudrais simplement pouvoir la mettre au format date, puisque le champ de mon formulaire est de type text.
                        Donc si tu as une idée, elle serait la bienvenue :-)
                        • Partager sur Facebook
                        • Partager sur Twitter
                          1 août 2010 à 20:58:39

                          Le type date prend comme valeur des chaînes de caractères avec une date au format anglais (AAAA-MM-JJ). Donc il suffit de transformer ta date récupérée avec STR_TO_DATE. Tu as essayé de faire un code ?
                          • Partager sur Facebook
                          • Partager sur Twitter
                            1 août 2010 à 20:59:56

                            STR_TO_DATE() comme dit plus haut, ou tu fais le traitement avec le langage qui récupère le formulaire.
                            • Partager sur Facebook
                            • Partager sur Twitter
                              1 août 2010 à 21:09:00

                              ok je vais essayer ça et je vous tiens au courant.
                              merci
                              • Partager sur Facebook
                              • Partager sur Twitter

                              problème date php mysql

                              × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
                              × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
                              • Editeur
                              • Markdown