Datum sortieren :-|

  • hi! hab ein kleines problem bei einem php guestbook:

    also zur erklärung: ich will die einträge im guestbook nach datum aufsteigend oder absteigend sortieren können auf der homepage. alle felder werden also per variable in die mysql datenbank geschickt und von dort wieder ausgelesen. jedesmal, wenn jemand den "submit" button drückt, wird ein timestamp dazugeschickt, der ebenfalls in der datenbank eine spalte ausmacht. das funktioniert auch.

    problem an sich: wenn ich in 1er minute mehrere einträge mache und dann absteigend sortiere, also d.h. der neueste eintrag (von hallo1 beginnend) ist ganz oben wie:


    eintrag um 15:02 Uhr: "hallo2"
    eintrag um 15:02 Uhr: "hallo1" <= das müsste ganz oben sein
    eintrag um 15:02 Uhr: "hallo3"
    eintrag um 15:01 Uhr: "hallo4"
    eintrag um 15:01 Uhr: "hallo5"
    eintrag um 15:01 Uhr: "hallo6"

    oder liegt das problem daran, dass ich
    1. den datentyp von datum+uhrzeit in der datenbankspalte nicht als "date" bezeichnet hab, sondern als character?
    2. oder war meine abfolge des testens und eintippens zu schnell, dass die datenbank probleme hatte?

  • Verstehe nicht ganz... du speicherst nur auf Minuten genau? Wie willst du da eine eindeutige chronologische Reihung festlegen? :confused:

  • @Paulchen: oke, ich habs jetzt auf sekunde eingestellt. vorerst scheint alles zu stimmen. jetzt hab ich ein anderes problem aber: sobald ich einstelle im computer das datum: 1-7-2007 komm der nächste eintrag vom guestbook unterhalb von 13-9-2006 rein. dabei sollte das doch oben sein :(


    Neo_II: jo das hab ich versucht. wenn ich den datentyp "date" verwende in mysql krieg ich nur als ausgabe "0000-00-00". nicht mal die form 00-00-0000 also tag/monat/jahr... sondern nur der standard fehler :(

    edit: wobei: ...äh, ah jetzt verstehe ich, warum das standardmässig mit YYYY-MM-DD eingestellt ist weil da würd 2007 vor 2006 kommen... weil der liest das wohl als ganze zahl z.b. bei 1-7-2007 wäre wohl 01072007 und mein datum wäre oben gewesen 13092006, was logischerweise größer ist als das von 2007

    => richtig wäre dann wohl (sowie die standarform 0000-00-00):
    2007-07-01
    2006-09-13

    denk ich mal so, ohne es ausprobiert zu haben^^, oder?


    edit2: für alle dies interessiert noch:
    wenn ich DATE als datentyp verwende, wird einfach die uhrzeit abgeschnitten beim rauslesen oder einspeichern (keine AHnung, ich hab gedacht es seien 19 characters erlaubt bei der datum+uhrzeit, aber die uhrzeit hab ich überhaupt gar nicht angezeigt bekommen beim rauslesen) und er sortiert wieder falsch. ich habs jetzt bei character als datentyp belassen und Y-m-d und H:i:s genommen. das schreibt jetzt alles richtig geordnet hin, also jeden eintrag, auch die vom nächsten jahr. brauch ich nur noch die struktur von Y-m-d zu haxorn.... dass ich das in die passende form krieg.

    ... und wahrscheinlich gäbs einen viel einfacheren weg das zu beheben O_o

  • ...äh, ah jetzt verstehe ich, warum das standardmässig mit YYYY-MM-DD eingestellt ist weil da würd 2007 vor 2006 kommen... weil der liest das wohl als ...

    Ich glaube nicht dass hier das englische Datumsformat, aus gründen der sortierreihenfolge gewählt wurde, sondern eher, weil dies einem GNU Datum entspricht, das einen Standard darstellt.
    Ich weis nicht ob man nicht das Datum Datenbankweit auf deutsches bzw. auch amerikanisches Ein/Ausgabe Format ändern kann, in Portgres ist das möglich (am besten Doku lesen).

    Falls das ändern der DB Config nicht möglich ist, musst halt einfach auf '-' oder was auch immer splitten und dir das DD.MM.YY selbst zusammenbaun (sowohl bei der eingabe als auch bei der ausgabe).


    ... wenn ich DATE als datentyp verwende, wird einfach die uhrzeit abgeschnitten beim rauslesen oder einspeichern ...

    Ich würd mal DATETIME verwenden dann hast du die Uhrzeit auch dabei.
    Lies einfach die Doku zu deiner Datenbank zum Punkt Datums und Zeiformate, da wirst du sicher alles finden was du wissen willst ;)

    -lg

  • hi! hab ein kleines problem bei einem php guestbook:

    also zur erklärung: ich will die einträge im guestbook nach datum aufsteigend oder absteigend sortieren können auf der homepage.

    Ich würde sagen das in 99.9% der Fälle das DBMS schlauer und schneller ist als bei einer eigenen implementierung wenns um sortieren geht, von daher als typ timestamp/date (was du am sql server halt am liebsten verwendest bzw. was er halt zur verfügung hat - ich nehm mysql eigentlich nie) nehmen und ORDER BY verwenden....

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!