Datum, gestern, heute

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

  • Datum, gestern, heute

    Hallo,

    in einer DB werden Daten in einem DATETIME-Feld gespeichert.

    Nun soll bei der Ausgabe nicht nur die letzte Uhrzeit dastehen

    TIME_FORMAT(MAX(besuch_zeit),'%H:%i') AS zeit

    sondern auch das Datum in Form von heute/gestern/Datum.

    Also je nachdem ob es heute/gestern/x war (Beispiel):

    ... heute um 18:20 Uhr
    ... gestern um 23:34 Uhr
    ... am 23.12. um 12:45 Uhr

    Sollte ich mir lieber eine Timestamp zurückliefern lassen und das dann PHP-seitig erledigen oder mit in die Abfrage irgendwie reinbauen?

  • #2
    müsstest du das nicht selbst wissen mit was du besser auskommst?

    Kommentar


    • #3
      Vergiss den Timestamp. Nimm die MySQL Datums- und Zeitfunktionen, insbesondere DATEDIFF(...). Die Rückgabe kannst du dann auf 0, 1 und >1 testen.
      Du kannst über MySQL mit IF Abfragen auch gleich richtig formatieren...

      Kommentar


      • #4
        Hm, eigentlich müßte es so gehen, nur leider erzählt mir die Fehlermeldung, dass...

        #1054 - Unknown column 'differenz' in 'field list'

        Wieso erkennt er den AS-Wert nicht an?

        SELECT

        besuch_von,
        TIME_FORMAT(MAX(besuch_zeit),'%H:%i') AS zeit,
        DATEDIFF(besuch_zeit,NOW()) AS differenz,

        CASE differenz WHEN '0' THEN 'heute' WHEN '-1' THEN 'gestern' WHEN '-2' THEN 'vorgestern' ELSE 'datum rein' END AS tag

        FROM

        profilbesucher

        ...

        Kommentar


        • #5
          Vermutlich wird die CASE-Klausel zu einem Zeitpunkt ausgewertet, wo die Aliase noch nicht zugewiesen wurden.

          Ich halte das für einen Bug in MySQL, wenn es denn wirklich so ist. Du kannst dir aber erstmal damit helfen:

          SELECT ...
          DATEDIFF(besuch_zeit,NOW()) AS differenz,
          CASE DATEDIFF(besuch_zeit,NOW()) WHEN ...
          FROM
          ...

          Kommentar

          Lädt...
          X