Das leidige Thema "Abfrage mit deutschem Datum"

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

  • Das leidige Thema "Abfrage mit deutschem Datum"

    Hi,
    ja, ich weiß, das Thema wurde hier mindestens 100000000 mal diskutiert, ich habe auch bereits die Suchfunktion benutzt und habe auch eine oder andere Lösung für mein Problem gefunden.
    Da ich aber in Sachen PHP und MYSQL ein Anfänger bin, benötige ich jedoch trotzdem eure Hilfe.


    in der Mysql-Tabelle gibt es eine Spalte namens "Eintragungsdatum" mit dem Datentyp "date", die wie folgt erstellt wird:

    [COLOR=blue] Tabelle erstellen:[/COLOR]
    $query = " create table test ( id INT(4) NOT NULL AUTO_INCREMENT PRIMARY KEY , Eintragungsdatum date , Anrede varchar(20) ,Vorname varchar(50) , Name varchar(50) ) ";

    Die Tabelle wird mittels eines Formulars mit Daten gefüllt (z.B. Anrede, Name usw.)
    Allerdings die Spalte "Eintragungsdatum" wird automatisch ausgefüllt:

    [COLOR=blue]Daten mittels eines Formulars in Tabelle eintragen[/COLOR]
    $datum = date("Y.m.d");

    $result = mysql_query ("insert into test set Eintragungsdatum='$datum',Anrede='".$_POST["anrede"]."', Vorname='".$_POST["vorname"]."',Name='".$_POST["name"]."' ");


    Nun hat der User mittels eines zweiten Formular die Möglichkeit eine Suche nach Datum zu starten.

    [COLOR=red] Das Problembeschreibung:[/COLOR]
    In das Suchformular folgt die Eingabe des Datums natülich in deutsch (z.B. 05.08.2003), aber das Datum in der Tabelle ist in englischer Form gespeichert.
    Wie soll ich das deutsche Datum mit englischem vergleichen??

    Ich habe im Board folgende Lösung gefunden, die leider irgendwie nicht funktioniert.
    [COLOR=blue] Abfrage:[/COLOR]
    $query = " SELECT * , DATE_FORMAT(Eintragungsdatum, '%d.%m.%Y') AS FORMDATE FROM test WHERE FORMDATE = '".$_POST['eingabe']."' ";

    Ich sitze gerade hier und suche und probiere und lese bis ich eine Lösung finde, dachte aber vielleicht könntet ihr mir auch helfen.

    Besten Dank im Voraus
    Zuletzt geändert von bigtail; 05.08.2003, 10:14.

  • #2
    Hi bigtail !

    du könntest das "deutsche" Datum per Stringbearbeitung in das richtige Format bringen, und dann mit dem Datum in der DB vergleichen.



    mfg jo

    Kommentar


    • #3
      würde es so machen ...

      gehen wir davon aus, dass die variable $datum="20.08.2003" ist

      erst einmal zerlegst du das datum in ein array mit drei feldern, index0=20 | index1=08 | index2=2003

      PHP-Code:
      $newdatum=explode(".",$datum);

      $rightdatum=$newdatum[2];
      $rightdatum.="-";
      $rightdatum.=$newdatum[1];
      $rightdatum.="-";
      $rightdatum.=$newdatum[0];

      echo 
      $rightdatum//2003-08-20 
      So geht es.

      Gruß
      Sven.

      Kommentar


      • #4
        Danke für eure Antworten.

        Es klingt schon mal sehr gut, besonders die super detailierte Antwort von mchashi.

        Ich werde es gleich ausprobieren.



        Allerdings die Lösung mit DATE_FORMAT scheint mir einfacher zu sein. Kann jemand etwas dazu schreiben??

        Kommentar


        • #5
          Jo, es hat super geklappt.

          Besten Dank

          Kommentar


          • #6
            also mit explode ist es zwar möglich...jedoch ist das viel zu aufwendig und spricht gegen performance!

            ich würde diese Variante vorziehen:
            Mache ein DATETIME Feld und hole die Daten so aus der DB als beispiel:

            date DATETIME
            SELECT DATE_FORMAT(date, '%Y %M %e') FROM table;

            und schon hast du dein gewünschtes Datum

            cya CrazyPip

            (ein blick auf mysql.com würde hilft bei DATETIME und DATE_FORMAT)

            Kommentar


            • #7
              Wenn Du mit PHP arbeitest würde ich mir von der DB allerdings einen UNIX-Timestamp zurückliefern lassen, da die PHP-Funktion strftime() weitaus flexibler ist als DATE_FORMAT() ... !
              carpe noctem

              [color=blue]Bitte keine Fragen per EMail ... im Forum haben alle was davon ... und ich beantworte EMail-Fragen von Foren-Mitgliedern in der Regel eh nicht![/color]
              [color=red]Hinweis: Ich bin weder Mitglied noch Angestellter von ebiz-consult! Alles was ich hier von mir gebe tue ich in eigener Verantwortung![/color]

              Kommentar


              • #8
                Noch etwas:

                while ( $row=mysql_fetch_object($result) )
                {
                echo "
                row->Eintragungsdatum
                $row->Anrede
                $row->Vorname
                $row->Name
                ";
                }

                Wie soll ich hier das englische Datum, aus der Datenbank in deutsches Datum umwandeln??

                Kommentar

                Lädt...
                X