Partage
  • Partager sur Facebook
  • Partager sur Twitter

MySQL date dans un DATETIME ou VARCHAR

Sujet résolu
    4 août 2020 à 17:39:33

    Bonjour, 

    Je développe une application en VB qui utilise une BDD. 

    Le problème c'est que quand je récupère la date en VB il est sous le format jj/mm/yyy, du coup j'ai mis la date sous le format Varchar dans ma BDD

    Cependant j'ai lus sur plusieurs site le fait qu'utiliser un format DateTime permet de gagner en espace de stockage et en performance. 

    Néanmoins dans mon code pour chaque requête je devrait faire alors : 

    - Utiliser la fonction REPLACE(JDATE,"-","/")

    - Un DATE FORMAT dans mon WHERE

    De plus dans l'interface j'aimerai garder le format jj/mm/yyyy 

    - Un STR TO DATE dans mon SELECT

    Je trouve cela pas très pratique. 

    Alors que si je stock en VARCHAR il me suffit de faire in STR TO DATE pour faire des recherche entre date

    J'aurais aimé avoir vos avis 

    -
    Edité par DeveloSt 4 août 2020 à 17:49:26

    • Partager sur Facebook
    • Partager sur Twitter

    Site Internet : https://devst.go.yj.fr

      4 août 2020 à 21:24:35

      Bonjour,

      Avec varchar, pas de requêtage sur des dates, donc à oublier.

      Tu transformes les dates pour pouvoir les gérer dans la requête, il n'y a rien de compliqué. Php et SQL ont des fonctions natives pour mettre la date au format souhaité.

      • Partager sur Facebook
      • Partager sur Twitter
        5 août 2020 à 11:09:37

        Pas de requêtage sur dates :? 

        Pourtant j'en fait bien et ça fonctionne (suffit de convertir le VARCHAR en DATE)

         SqlDataChart.SelectCommand = "SELECT evenement.date, SUM(evenement.duree) AS duree, evenement.lieux FROM evenement WHERE STR_TO_DATE(evenement.date, '%d/%c/%Y')  BETWEEN '" + firstDatePer + "' AND '" + LastDatePer + "'


        Donc je pense que la requete

        SELECT MINUTE(STR_TO_DATE(....)) Fonctionne également (j'ai pas testé car je passe par du VB pour récupérer les minutes quand j'ai besoin) 



        philodick a écrit:

        Bonjour,

        Avec varchar, pas de requêtage sur des dates, donc à oublier.

        Tu transformes les dates pour pouvoir les gérer dans la requête, il n'y a rien de compliqué. Php et SQL ont des fonctions natives pour mettre la date au format souhaité.

        C'est pas compliqué mais c'est beaucoup plus long : 

        Il faut que je transforme la date de VB -> SQL pour chaque UPDATE et INSERT INTO ou dans le WHERE
        Il faut que je transforme la date de SQL -> VB pour chaque SELECT

        Ma question porte vraiment sur l'optimisation (Stockage/Performance) 

        -
        Edité par DeveloSt 5 août 2020 à 13:18:27

        • Partager sur Facebook
        • Partager sur Twitter

        Site Internet : https://devst.go.yj.fr

          24 août 2020 à 15:50:40

          DeveloSt a écrit:

          C'est pas compliqué mais c'est beaucoup plus long

          Bonjour,

          Oui, c'est un peu vrai, mais c'est un peu nécessaire :p

          En tout cas, il est plus pertinent de stocker en base avec les bons types de données afin d'optimiser le stockage et l'utilisation des données ...

          Donc il faut te débrouiller pour que tes contrôles VB fournisse un format yyyy-mm-dd à MySQL dans tes INSERT, et que MySQL fournisse le format attendu par ton contrôle VB dans tes SELECT (fonction DATE_FORMAT()).

          • Partager sur Facebook
          • Partager sur Twitter
          Seul on va plus vite, ensemble on va plus loin ... A maîtriser : Conception BDD, MySQL, PHP/MySQL
            31 août 2020 à 9:30:28

            Bonjour, 

            Je vais dans un premier temps étudier les capacités de stockage de la BDD. 

            J'étais partie sur des varchar pour avoir une application fonctionnelle le plus rapidement possible 

            (Contraintes liées au temps et par manque d'expérience, (première année d’expérience pro en tant que développeur))  

            • Partager sur Facebook
            • Partager sur Twitter

            Site Internet : https://devst.go.yj.fr

            MySQL date dans un DATETIME ou VARCHAR

            × 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