Ich habe eine Reihe von Datensätzen, die letzte Woche erstellt wurden, und von denen ich nur diejenigen abrufen möchte, die zwischen 6:45 und 19:15 Uhr erstellt wurden. Ich habe eine Spalte creation_date
, die ich verwenden kann.
Wie kann ich das in SQL machen?
In Oracle können wir Daten in Zahlen umwandeln und sie auf verschiedene Arten anwenden.
Zum Beispiel gibt sysdate-7
uns das Datum vor sieben Tagen. trunc(some_date)
entfernt das Zeitelement aus einer Datumsspalte. Und to_char(some_date, 'SSSSS')
gibt uns sein Zeitelement als Anzahl der Sekunden seit Mitternacht. So 06:45:00 ist 24300 Sekunden und 18:15:59 ist 69359 Sekunden (bitte überprüfen Sie diese Zahlen, da sie Back-of-Envelope-Figur sind).
Wie auch immer, alles zusammen in einer einzigen Abfrage wie folgt ...
%Vor%... erzeugt alle in der letzten Woche erstellten Datensätze mit einem Zeitelement innerhalb der Kernstunden.
Diese Abfrage gibt alle Datensätze zurück, die in den letzten sieben Tagen mit dem Zeitabschnitt ihres Erstellungsdatums zwischen 6:45 und 19:15 erstellt wurden.
%Vor%Basierend auf den oben genannten Kriterien, werden die Aufzeichnungen der letzten Woche zwischen Sonntag und Samstag in den Stunden 06:45:00 und 19:15:59 zurückgebracht.
Sie können die "- 7" und die "+ 6" auf verschiedene Zahlen einstellen, wenn Sie möchten, dass der Wochenbereich unterschiedlich ist (wenn Ihre Woche beispielsweise Montag bis Sonntag ist).
%Vor%Tags und Links sql oracle date-arithmetic