Date SQl

Résolu
Bonjour, j'aurais besoin de comparer 2 dates dans une requête sql :
j'ai fait ceci:
$datedebmois=$annee."-".$mois."-00";
$datefinmois=$annee."-".$mois."-32";
$rqtCmd="Select * from bon_commande b where b.etat='Confirmer' AND b.date>".$datedebmois." AND b.date<".$datefinmois." order by b.date";

Dans ma bdd mes dates sont bien au formats annee-mois-jour
Cette requete ne me met aucun code erreur mais elle ne m'affiche pas les commandes du mois, et pourtant il y en a bien
Merci de votre aide

6 réponses

  1. J'ai des doutes sur le bon comportement avec des dates qui ne peuvent exister :|
    L'ideal serait de voir le SQL généré et vérifier qu'il donne bien des résultats avec un client MySQL.

    $datedebmois=$annee."-".$mois."-01";
    $rqtCmd="
    Select * from bon_commande b
    where
    b.etat='Confirmer'
    AND b.date >= ".$datedebmois."
    AND b.date < ".$datedebmois." + INTERVAL 1 MONTH
    order by b.date";
    1. Bonjour et merci de ton aide mais ça ne fonctionne pas.
      J'aimerais simplement sélectionner dans ma bdd toute les commandes qui ont etat=Confirmer et qui ont été créer dans le mois et l'année en cours....
      Par exemple pour ce mois ci, toutes les commandes de novembre 2010.

      En sachant que dans ma base de donnée les dates sont au format annee-mois-jour

      Merci de votre aide
      1. J'ai reussi à procéder autrement en prenant mes numéro de bon de commande étant formé comme ceci :
        anneemoisjournumero

        avec le code
        $datedebmois=$annee."".$mois."0000";
        $datefinmois=$annee."".$mois."9999";
        $rqtCmd="
        Select * from bon_commande b
        where
        b.etat='Confirmer'
        AND b.numBon >= ".$datedebmois."
        AND b.numBon <".$datefinmois."
        order by b.numBon";

        Et la tout fonctionne
        je suppose qu'il n'aime pas trop les -
        enfin merci de votre aide
        A+
        1. Je viens de comprendre ... PAN ..
          $datedebmois="'".$annee."-".$mois."-01'";
          $rqtCmd="
          Select * from bon_commande b
          where
          b.etat='Confirmer'
          AND b.date >= ".$datedebmois."
          AND b.date < ".$datedebmois." + INTERVAL 1 MONTH
          order by b.date";

          En effet, les "-" en dehors de chaine sont des vrais "moins" et non des separateurs de date ...
          1. ok merci, je ferai autrement et j'y penserai pour le prochain site....
            Bonne journée