Ralf: MySQL "DATE"

Hallo Leute,

ich habe folgendes Problem:

Ich habe ein Formular in dem man "TAG", "Monat" und "Jahr" in 3 Inputfeldern als Zahlenwerte eingibt.

Zuerst habe ich in der Datenbank auch 3 Felder jeweils für Tag Monat und Jahr angelegt. Das ist dann aber doch nicht so das wahre, weil ich es später ja wieder auslesen möchte und das zu kompliziert ist.

Nun möchte ich mit dem MySQL-Typ "DATE" das machen. Jedoch ist der Standart ja immer 0000-00-00 ...

Mein Problem (bzw. meine beiden Probleme) ist nun, dass ich nicht genau weiß wie ich das Jahr, Monat und Tag mit den 3 inputfeldern in dieses Format INSERT(en) kann bzw. Wenn es drin ist dass ich dann in meiner Ausgabe nicht zb.:

2003-02-26  sondern  26.02.2003

stehen hab :'((
Kann mir jemand nen Tipp geben?

Danke schonmal im voraus!

  1. Nun möchte ich mit dem MySQL-Typ "DATE" das machen. Jedoch ist der Standart ja immer 0000-00-00 ...

    Standard, nicht Standart :)

    Mein Problem (bzw. meine beiden Probleme) ist nun, dass ich nicht genau weiß wie ich das Jahr, Monat und Tag mit den 3 inputfeldern in dieses Format INSERT(en) kann

    Der SQL-Befehl ist ein einfacher Text, Du mußt also lediglich Deine Daten zu so einem Text zusammenfügen. Beachte dabei aber, daß Du von außen kommende Daten nicht einfach roh weiterverarbeitest (Stichwort: mysql_escape_string()).

    In Deinem Falle müsstest Du erstmal prüfen, ob es sich bei den drei Daten um Zahlen handelt und ob sie zusammen ein gültiges Datum ergeben. Deine Programmiersprache bietet Dir dafür sicher passende Funktionen an (is_numeric() und checkdate() fallen mir da für PHP ein).
    Abschließend setzt Du diese drei Daten in den SQL-Text ein. Zum Formatieren gibt es fast überall eine Funktion namens sprintf(). Sofern vorhanden kann man alternativ auch mktime() und date() benutzen, das hätte den Vorteil, daß ein Datum à la 30.11.2003 automatisch in 1.12.2003 umgerechnet wird.

    bzw. Wenn es drin ist dass ich dann in meiner Ausgabe nicht zb.:

    2003-02-26  sondern  26.02.2003

    MySQL bietet Dir ein reichhaltiges Angebot an Funktionen zum Bearbeiten von Daten an. Schau mal in die Anleitung: http://www.mysql.com/doc/en/Date_and_time_functions.html.

    Gruß,
      soenk.e

    1. Hallo

      2003-02-26  sondern  26.02.2003

      in php kann mans z.B. auch so machen:
      Du hast 3 Inputfelder oder selectfelder jenachdem, diese 3 haben alle einen Namen und die ziehst du zusammen:
      $geburtsdatum = $gebjahr."-".$gebmonat."-".$gebtag;

      und das $geburtsdatum speicherst du dann in deiner DB als Format date ab.

      Naja nur ein Tip in php, weiss ja nicht was du da nimmst...

      Gruß,
        soenk.e

      LG Christoph

      --
      Ich bin ein spezialisz!
      (Zitat von VENGA JO)
  2. Ist eigentlich nicht weiter Schlimm.

    Wenn du die 3 Sachen in einzelnen feldern hast kannst du sie einfach zusammensetzen.

    z.b. die Variablen $tag, $monat, $jahr

    Da kannst du dir dein Format basteln mit

    $datum = $jahr."-".$monat."-".$tag

    Die Variable Datum könntest du jetzt problemlos übergeben.

    --------------

    Wenn Du es im Format 28.02.2003 hast dann musst du es hat vorher auseinadernehmen.

    angenommen in der Variable $datum steht "28.02.2003"

    $datum = substr($datum,6,4)."-".substr($datum,3,2)."-".substr($datum,0,2);

    jetzt würde in der variable das datum "2003-02-28" stehen.

    Erde

    Hallo Leute,

    ich habe folgendes Problem:

    Ich habe ein Formular in dem man "TAG", "Monat" und "Jahr" in 3 Inputfeldern als Zahlenwerte eingibt.

    Zuerst habe ich in der Datenbank auch 3 Felder jeweils für Tag Monat und Jahr angelegt. Das ist dann aber doch nicht so das wahre, weil ich es später ja wieder auslesen möchte und das zu kompliziert ist.

    Nun möchte ich mit dem MySQL-Typ "DATE" das machen. Jedoch ist der Standart ja immer 0000-00-00 ...

    Mein Problem (bzw. meine beiden Probleme) ist nun, dass ich nicht genau weiß wie ich das Jahr, Monat und Tag mit den 3 inputfeldern in dieses Format INSERT(en) kann bzw. Wenn es drin ist dass ich dann in meiner Ausgabe nicht zb.:

    2003-02-26  sondern  26.02.2003

    stehen hab :'((
    Kann mir jemand nen Tipp geben?

    Danke schonmal im voraus!