[MySQL 4.1] Zwischen 2 Datums suchen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

  • [MySQL 4.1] Zwischen 2 Datums suchen

    Hallo.

    Das Alter wird bei mir unter Varchar so gespeichert 04-09-1986
    Umändern ist sehr schwer da es zu aufwendig ist da ich dann genug andere Scripte umändern müsste und es zahlt sich leider nicht aus :-(

    Möchte gerne das eine Suche stattfindet
    Zwischen dem Jahr 1986 und 1990 sollen alle Daten ausgegeben werden?

    Bei folgender Abfrage:

    PHP-Code:
    <?php 
    $von 
    "01-01-1986"
    $bis "01-01-1990"

    include(
    'config/mysql.php'); 
    $tabelle ="user"

    $dbverbindung mysql_connect ($dbserver$dbuser$dbpass); 
    $abfrage "SELECT Nickname FROM user WHERE geburtstag BETWEEN '".$von."' AND '".$bis."'"
    $result mysql_db_query ($dbname$dbanfrage$dbverbindung); 
    while (
    $ausgabe mysql_fetch_object($result)) 



    echo 
    "$ausgabe->Nickname<br />"

    mysql_close ($dbverbindung

    ?>
    Werden nur 4 Daten ausgegeben, aber egal welches Datum ich jetzt verwende zb. 1970 bis 1999, es werden immer nur die gleichen 4 angezeit.

    Vielleicht könnt ihr mir weiterhelfen, ein anderes Forum hat es mir geschlossen nur weil ich nicht genug Ahnung habe ?

    Danke

  • #2
    Ersetze "geburtstag" durch

    Code:
    STR_TO_DATE(geburtstag, '%m-%d-%Y');
    $von und $bis mußt du dann aber sauber als mySQL-Datum verfassen:

    Code:
    $von = "1986-01-01"; 
    $bis = "1990-01-01";
    Das müßte helfen.

    Kommentar


    • #3
      Hallo danke für deine Hilfe,
      leider auch hier werden nur die selben 4 Daten ausgegeben egal bei welchen Datum?!

      PHP-Code:
      <?php
      $von 
      "1986-01-01"
      $bis "1990-01-01"


      include(
      'config/mysql.php'); 
      $tabelle ="user"

      $dbverbindung mysql_connect ($dbserver$dbuser$dbpass); 
      $abfrage "SELECT Nickname FROM user WHERE STR_TO_DATE(geburtstag, '%m-%d-%Y') BETWEEN '".$von."' AND '".$bis."'"
      $result mysql_db_query ($dbname$dbanfrage$dbverbindung);
      while (
      $ausgabe mysql_fetch_object($result))

      {

      echo 
      "$ausgabe->Nickname<br />";

      mysql_close ($dbverbindung)

      ?>

      Kommentar


      • #4
        Hi,

        probier das mal
        PHP-Code:
        $von '1986-01-01';
        $bis '1990-01-01';

        $n_von substr($von04);
        $n_bis substr($bis04);

        $abfrage "SELECT Nickname FROM user WHERE SUBSTR(geburtstag,1,4) >= ".$n_von." AND SUBSTR(geburtstag,1,4) <= ".$n_bis
        vg
        gourmet

        Kommentar


        • #5
          @gourmet
          Das ist ja ganz eine andere Abfrage und im besten Fall ein Gewürge, um den Fehler zu umgehen, statt zu eliminieren.

          @chris86kbg
          ich sehe jetzt den Fehler nicht gerade. Frage mysql_error() ab und verwende nicht das schon lange veraltete mysql_db_query ()

          EDIT:

          Jetzt seh ichs: du definierst $abfrage und schickst dann $dbabfrage an die DB

          Gruss
          H2O

          Kommentar


          • #6
            Danke, Danke, Danke!!!!!

            Seit 2 Wochen suche ich den Fehler, in anderen Forums wurden die Threads geschlossen da es unmöglich ist.

            Danke!!!!

            PHP-Code:
            <?php
            $von 
            "1986-01-01"
            $bis "1986-04-10"


            include(
            'config/mysql.php'); 
            $tabelle ="user"

            $dbverbindung mysql_connect ($dbserver$dbuser$dbpass); 
            $dbanfrage "SELECT Nickname FROM user WHERE STR_TO_DATE(geburtstag, '%m-%d-%Y') BETWEEN '".$von."' AND '".$bis."'"
            $result mysql_db_query ($dbname$dbanfrage$dbverbindung);
            while (
            $ausgabe mysql_fetch_object($result))

            {

            echo 
            "$ausgabe->Nickname<br />";

            mysql_close ($dbverbindung)

            ?>

            Kommentar


            • #7
              Meine Einwände solltest du trotzdem beherzigen, dann würde es etwa so aussehen:
              PHP-Code:
              <?php
              include('config/mysql.php'); 
              $dbverbindung mysql_connect ($dbserver$dbuser$dbpass) or exit(mysql_error()); 
              mysql_select_db($dbname) or exit(mysql_error()); 

              $von "1986-01-01"
              $bis "1990-01-01"
              $abfrage "
                  SELECT 
                      nickname 
                  FROM 
                      user 
                  WHERE 
                      STR_TO_DATE(geburtstag, '%m-%d-%Y') BETWEEN '
              $von' AND '$bis'"
              $result mysql_query($dbanfrage) or exit(mysql_error());
              while (
              $ausgabe mysql_fetch_object($result)){
                  echo 
              "$ausgabe->nickname<br />";

              mysql_close();
              ?>
              Gruss
              H2O

              Kommentar

              Lädt...
              X