Thorsten: Datensatz wird mit timestamp gespeichert. Nur von heute ausgeben

Erstens, super Forum!

Zweitens:

Ich speicher meine Datensätze in einer MYSL Datenbank an. Jeder Datensatz wird mit einem Datum (timestamp 2020-10-09 13:31:29) versehen.

Nun möchte ich mir alle Datensätze von heute ausgeben. Abe rich habe Probleme mit der Uhrzeit.

Kann ich nur direkt auf das Datum zugreifen.

Thorsten

  1. Hallo Thorsten,

    es gibt die SQL Funktion DATE(). Ich meine, die benutzt man z.B. so:

    select id, foo, bar, bla, dings
    from aTable
    where DATE(datum) = CURDATE()
    

    Wenn eine Query dieser Art zeitkritisch ist, kannst Du auch überlegen, Datum und Uhrzeit getrennt zu speichern, oder das Datum als materialisierte, berechnete Spalte extra zu führen.

    Rolf

    --
    sumpsi - posui - obstruxi
    1. Hi,

      es gibt die SQL Funktion DATE(). Ich meine, die benutzt man z.B. so:

      select id, foo, bar, bla, dings
      from aTable
      where DATE(datum) = CURDATE()
      

      curdate liefert das aktuelle Datum mit Uhrzeit 0:00:00.

      Ein einfacher Vergleich datum > curdate() reicht. Dann muß nicht für jede Zeile erst die DATE-Funktion angewandt werden.

      cu,
      Andreas a/k/a MudGuard

      1. Hallo Andreas,

        ist dein 00:00:00 vielleicht ein Artefakt deiner Ausgabe? Vielleicht ist ein DATE in MySQL ja auch als DATETIME mit Zeit=0 implementiert, keine Ahnung.

        Laut Handbuch liefert CURDATE jedenfalls ein DATE, kein DATETIME. Und ich habe das Statement mit einer TIMESTAMP-Spalte ausprobiert (deren Zeitwerte nicht 0 waren), es hat funktioniert.

        Rolf

        --
        sumpsi - posui - obstruxi