Partage
  • Partager sur Facebook
  • Partager sur Twitter

recuperation d'enregistrement par rapport a la date

Sujet résolu
    10 novembre 2010 à 22:51:19

    Salut à tous j'ai un petit soucis avec une requête sql.

    Je voudrais que ma requête récupère les enregistrement de ma table qui ont les champ publi=1 que date_db soit supérieur ou égale a la date du jour et que date_fn soit inférieur ou égale à la date du jour.

    J'ai essayer ceci

    $str_date_actuel_actu = date("Y-m-d");
    $sql = 'SELECT id,publi,date_db,date_fn FROM ma_table WHERE publi="1" AND date_db >= '.$str_date_actuel_actu.' AND date_fn <= '.$str_date_actuel_actu;
    


    Je pensais que ceci fonctionnerais mais sa ne marche pas.
    J'ai voulu utilise BETWEEN mais je peux pas vu que la date du jour est à l'exterieur de la table.

    Quelqu'un aurais t'il une idée pour m'aider svp ?
    Ou existe t'il une fonction mysql spécifique ?

    J'ai fait des recherche dans la doc sans résultats pour le moment.

    Merci
    • Partager sur Facebook
    • Partager sur Twitter
      10 novembre 2010 à 23:37:33

      Citation : tribaljam


      <?
      $str_date_actuel_actu = date("Y-m-d");
      $sql = 'SELECT id,publi,date_db,date_fn FROM ma_table WHERE publi="1" AND date_db >= '.$str_date_actuel_actu.' AND date_fn <= '.$str_date_actuel_actu;
      




      Tu devrait utiliser des chaînes en ", l'erreur sauterait aux yeux :<citation rid="5593744">

      <?
      $str_date_actuel_actu = date("Y-m-d");
      $sql = "SELECT id,publi,date_db,date_fn 
      FROM ma_table 
      WHERE publi=1 
        AND date_db >= '$str_date_actuel_actu' 
        AND date_fn <= '$str_date_actuel_actu'";
      


      En l'occurence tu avais oublié les ' autour des dates.

      Tu pourrais aussi utiliser du SQL :

      SELECT id,publi,date_db,date_fn 
      FROM ma_table 
      WHERE publi=1 
        AND CURRENT_DATE BETWEEN date_fn AND date_db;
      
      • Partager sur Facebook
      • Partager sur Twitter
        10 novembre 2010 à 23:49:35

        Tiens tu mets la date de fin en premier dans le BETWEEN ? J'imagine que ça doit marcher, ça heurte juste ma logique :-°
        • Partager sur Facebook
        • Partager sur Twitter
          11 novembre 2010 à 0:37:00

          Merci bcp Lord Casque Noir ta deuxième solution est parfaite j'ai juste inter change date_db et date_fn ^^

          Pour la façon d'écriture j'ai écrit rapidement la requête je savais que c'etais pas une erreur de syntaxe mais de mauvaise utilisations de la requête.

          Merci en tt cas
          • Partager sur Facebook
          • Partager sur Twitter
            11 novembre 2010 à 9:46:57

            Citation : rotoclap

            Tiens tu mets la date de fin en premier dans le BETWEEN ? J'imagine que ça doit marcher, ça heurte juste ma logique :-°



            Boah j'ai juste repris le "date_db soit supérieur ou égale a la date du jour et que date_fn soit inférieur ou égale à la date du jour" qui d'ailleurs était inversé on dirait.

            Pour info dans du SQL, 2010-01-01 est un entier qui vaut 2008, '2010-01-01' est déjà plus une date XD
            • Partager sur Facebook
            • Partager sur Twitter

            recuperation d'enregistrement par rapport a la date

            × 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