Ich habe ein Szenario, in dem ich in der Lage sein soll, Zeilen aus einer MySQL-Tabelle auszuwählen, aber Zeilen ausschließen, in denen die aktuelle Tageszeit innerhalb eines Zeitbereichs liegt.Die MySQL-Struktur für einen Zeitbereich für die Abfrageoptimierung korrigieren?
Beispiel: Die "ruhige" Periode für eine Reihe ist 22.00 Uhr - 8.30 Uhr. Meine SQL SELECT-Anweisung sollte diese Zeile nicht zurückgeben, wenn die aktuelle Serverzeit nach 22 Uhr oder vor 8:30 Uhr liegt.
Beispiel 2: Die "Ruhezeit" ist NULL und wird ignoriert.
Beispiel 3: Eine neue Zeile wird mit einer ruhigen Periode von 9:53 Uhr bis 9:55 Uhr erstellt. Wenn sich die aktuelle Serverzeit in diesem 2-Minuten-Fenster befindet, wird die Zeile von SELECT nicht zurückgegeben.
Meine Frage: Welches Datenformat würden Sie in der Datenbank verwenden und wie würden Sie die Abfrage schreiben?
Ich habe über ein paar verschiedene Ansätze nachgedacht (start_time als eine Spalte definieren und die Dauer als andere, definieren beide in Sekunden ... oder mit Datumsstempel ... oder was auch immer). Keine von ihnen scheint ideal und erfordert eine Menge Berechnung.
Danke!
Benötigen Sie nur die Zeit für jede Zeile oder benötigen Sie auch das Datum? – liquorvicar
Ich muss auch nicht zurückkehren. Ich versuche nur basierend auf der Tageszeit zu filtern. Ich interessiere mich nicht für Date. Wie bei meinem obigen Beispiel: Ich möchte Zeilen ausschließen, in denen sich die aktuelle Server-Tageszeit innerhalb des angegebenen "stillen Fensters" befindet. –