00 Stimmen

MySQL: Heutige Datensätze in TIMESTAMP Spalte suchen

Frage von Chematik | 25.12.2012 um 10:44

Ich möchte alle Datensätze auswählen, die am heutigen Datum erstellt wurden.

Das Problem: Die Spalte ist vom Typ TIMESTAMP und hat daher keinen eindeutigen Wert für "heute", schließlich ist die Zeit ja bei jeder Zeile immer unterschiedlich. Wäre das Feld vom Typ DATE wäre dies also einfach, aber ich möchte auch die Zeit speichern.

Wie kann ich trotzdem alle Zeilen einer TIMESTAMP Spalte auswählen, die das heutige Datum haben?

AntwortenPositivNegativDatumStimmen
02 Stimmen

Du kannst folgende Anweisung benutzen, wobei "spalte" deine TIMESTAMP- Spalte ist:

... WHERE DATE(spalte) = CURDATE()

Damit wandelst du jedes TIMESTAMP formatierte Datum in ein DATE um und vergleichst dies mit CURDATE(), dem aktuellen Datum. Und findest so die richtigen Datensätze.
25.12.2012 um 22:03

AntwortenPositiv Negativ
0Beste Antwort2 Stimmen

Die Lösung von Axuter ist natürlich richtig und funktioniert auch, allerdings ist dafür ein kompletter Table-Scan erforderlich. Alle Datensätze müssen durchgegangen und berechnet werden (schlecht für die Performance).

Besser ist die folgende Variante:

... WHERE spalte >= CURRENT_DATE
      AND spalte <  CURRENT_DATE + INTERVAL 1 DAY

Wenn ein Index auf der Spalte liegt, kann so viel effizienter gesucht werden, in dem einfach mit der oberen und der unteren Schranke bezüglich des heutigen Tages gerechnet wird (größer oder gleich des heutigen Datums und kleiner als das heutige Datum + 1 Tag).
08.01.2013 um 09:50

AntwortenPositiv Negativ
Antworten

Ähnliche Themen

Wichtiger Hinweis

Bitte beachten Sie: Die Beiträge auf askingbox.de sind Beiträge von Nutzern und sollen keine professionelle Beratung ersetzen. Sie werden nicht von Unabhängigen geprüft und spiegeln nicht zwingend die Meinung von askingbox.de wieder. Mehr erfahren.

Jetzt mitmachen

Stellen Sie Ihre eigene Frage oder schreiben Sie Ihren eigenen Artikel auf askingbox.de. So gehts.