How to Perform Hours of Operation Queries in PostgreSQL
Original Query Complexity
The original query, intended to identify records that are "open" (within the specified hours of operations), was complex due to the need to handle various scenarios wo die Betriebsstunden um Ende der Woche wickeln können. Um diesen Prozess zu vereinfachen, werden wir einen anderen Ansatz unter Verwendung einer Datenstruktur namens tsRange .
vorstellen, die tsRange
tsrange ein Datentyp in postgresql, der eine Entfernung von Zeitstamps darstellt, ohne Zeitzone darstellt. Es bietet eine bequeme Möglichkeit, Zeitintervalle zu speichern und zu manipulieren.
neu gestalten die Tabellenstruktur
wir ersetzen die vorhandenen Spalten (Openens_on, Closes_on, Openens_at, Closes_at) durch eine einzelne Spalte namens type type tsrange. Hours of operation will be stored as a set of tsrange values.
Example
For example, the following tsrange value represents hours of operation from Wednesday, 6 PM to Thursday, 5 AM:
'[1996-01-03 18:30, 1996-01-04 05:00]'
Abfrage mit tsRange
mit der aktualisierten Tabellenstruktur werden die Abfrage viel einfacher:
SELECT * FROM hoo WHERE hours @> f_hoo_time(now())
Die Funktion f_hoo_time () konvertiert einen Zeitstempel mit Zeitzone in einen Zeitstempel, während der Content -Operator (@>) überprüft, ob die aktuelle Zeit in den angegebenen Zeitbereich fällt. empfehlen, einen SP-Gist-Index für die Stundenspalte zu erstellen. Dieser Index ermöglicht eine effiziente Suche in Zeitbereiche, was zu einer schnelleren Abfrageleistung führt. Dieser Ansatz ist effizienter und robuster als die ursprüngliche Abfrage.
Haftungsausschluss: Alle bereitgestellten Ressourcen stammen teilweise aus dem Internet. Wenn eine Verletzung Ihres Urheberrechts oder anderer Rechte und Interessen vorliegt, erläutern Sie bitte die detaillierten Gründe und legen Sie einen Nachweis des Urheberrechts oder Ihrer Rechte und Interessen vor und senden Sie ihn dann an die E-Mail-Adresse: [email protected] Wir werden die Angelegenheit so schnell wie möglich für Sie erledigen.
Copyright© 2022 湘ICP备2022001581号-3