hustieboy: neuestes datum ermitteln, SELECT "?"

hi,

und zwar folgendes:
in meiner DB speichere ich das datum (einer useranmeldung) in der form : 3 11 03 (string),
nun möchte ich auf einer anderen seite den neuesten(!) eintrag anzeigen,
weiß nun nicht, ob's so ohneweiteres geht, da der spalten-typ nicht "date" ist.

muß ich irgendwo : strtotime() verwenden ? oder kann der (datums)-string auch anders als datum  interpretiert werden?

oder wie ?

danke
hustieboy

  1. Moin!

    in meiner DB speichere ich das datum (einer useranmeldung) in der form : 3 11 03 (string),

    Das ist schlecht.

    nun möchte ich auf einer anderen seite den neuesten(!) eintrag anzeigen,
    weiß nun nicht, ob's so ohneweiteres geht, da der spalten-typ nicht "date" ist.

    Würdest du DATE als Spaltentyp verwenden, würde die Datenbank automatisch wissen, wie sie die gespeicherten Daten zu sortieren hat. Deinen String kann man jedenfalls nicht nach Datum sortieren, dazu ist er mangelhaft formatiert.

    muß ich irgendwo : strtotime() verwenden ? oder kann der (datums)-string auch anders als datum  interpretiert werden?

    Das ist alles unnötige Zusatzarbeit, die du der Datenbank aufhalst. Verwendet DATE als Spaltentyp, und alles wird gut.

    - Sven Rautenberg

    --
    Die SelfHTML-Developer sagen Dankeschön für aktuell 20065,57 Euro Spendengelder!
    1. und alles wird gut<<

      lol, ok guy's, habt mich überzeugt (date), thanks :-)

      hustie

  2. Hello,

    in meiner DB speichere ich das datum (einer useranmeldung) in der form : 3 11 03 (string),
    nun möchte ich auf einer anderen seite den neuesten(!) eintrag anzeigen,
    weiß nun nicht, ob's so ohneweiteres geht, da der spalten-typ nicht "date" ist.
    muß ich irgendwo : strtotime() verwenden ? oder kann der (datums)-string auch anders als datum  interpretiert werden?

    Meiner Meinung nach machst Du Dir es unnötig schwer. Warum nimmst Du für das Datum nicht den Spaltentyp date oder auch timestamp. Mit date als Spalte kannst Du schon in der SQL-Query diverse Datumsberechnungen machen die sich auch recht komfortabel schreiben lassen, siehe http://www.mysql.com/doc/en/Date_calculations.html. Wenn Du Dein datum in PHP (oder was auch immer) in einen timestamp umwandelst und speicherst klappt das dann auch recht gut.
    Zumindest solltest Du aber - wenn Du schon Dein Spaltentyp als String lassen möchtest - die Notation IMHO anstatt als 3 11 03 in 2003-11-03, also in das englische Format ändern. Das hat den Vorteil das Du mit Hilfe der auf- und absteigenden Sortierung Deine Datensätze nach Datum sortieren kannst...

    Gruss AndreD

  3. hi again,

    ok ich hab nun die spalte in typ "date" geändert,
    das datum wird mit : INSERT INTO (date) VALUE(now());
    eingetragen.

    die ausgabe will ich nun aber formatiert haben: dd-mm-yy.

    $date = date("d-m-Y", $ergeb[6]);
    ..hab ich probiert

    formatiert zwar, gibt aber 01-01-1970 aus...

    jemand eine idee ?

    danke
    hustieboy

    1. Hallo,

      ok ich hab nun die spalte in typ "date" geändert,

      Brav, brav!
      Im Ernst: Das ist das einzig vernuenftige.

      das datum wird mit : INSERT INTO (date) VALUE(now());
      eingetragen.
      die ausgabe will ich nun aber formatiert haben: dd-mm-yy.

      $date = date("d-m-Y", $ergeb[6]);

      Du versuchst offenbar, mit PHP zu formatieren.
      date() erwartet aber als zweiten Parameter
      einen Unix-Timestamp, und Du fuetterst
      ihm irgend etwas anderes, das er als Null
      betrachtet, und somit gibt es den Nullpunkt
      der Unix-Timestamp-Zaehlung, naemlich den 1.1.1970...

      Du koenntest MySQL bereits einen Unix-Timestamp
      zurueckgeben lassen, dann ist es in PHP nur
      noch ein Schritt.

      SELECT UNIX_TIMESTAMP(datum) FROM Tabelle WHERE ...
      oder so.

      Noch eleganter waere es allerdings, gleich
      alles durch MySQL durchfuehren zu lassen,
      und zwar mit der Funktion
      DATE_FORMAT()

      Lies mal das da durch:
      http://www.mysql.com/doc/de/Date_and_time_functions.html

      HTH, Gruesse,

      Thomas

      --
      Dank /my/ automatisch ausgeblendet: JavaScript, ASP.
      Manuell "ausgeblendet": Threads mit Frames, Iframes und Scrollbalken im Subject...
      Bitte keine Mails mit Fachfragen - dafuer gibt es das Forum!
    2. hi,

      ok ich hab nun die spalte in typ "date" geändert,
      das datum wird mit : INSERT INTO (date) VALUE(now());
      eingetragen.

      gute entscheidung.

      die ausgabe will ich nun aber formatiert haben: dd-mm-yy.

      das kann die datenbank bereits für dich machen, bevor die daten überhaupt bei PHP ankommen (wir reden von mysql, oder?) - http://www.mysql.com/doc/de/Date_and_time_functions.html

      $date = date("d-m-Y", $ergeb[6]);
      ..hab ich probiert

      formatiert zwar, gibt aber 01-01-1970 aus...

      das kann nicht gehen - PHP erwartet als parameter für date() einen UNIX-Timestamp - der DATE-typ von mysql hat aber ein vollkommen anderes format (und auch TIMESTAMP von mysql ist _kein_ UNIX-Timestamp!)

      aber auch die konvertierung eines datumstyps in einen UNIX-timestamp kann bereits die datenbank für dich machen, mit der funktion
      UNIX_TIMESTAMP()
      (erklärung siehe obiger link)

      also, entweder bereits in der query das datum entsprechend formatiert selektieren (DATE_FORMAT(), erklärung ebenfalls unter obigem link), oder aber als UNIX-timestamp umformatieren lassen, und diesen dann mit PHP und date() formatiert ausgeben lassen.

      gruss,
      wahsaga