Ich habe delivery slots
, die eine from
Spalte hat (datetime
).So erhalten Sie Zeilen zwischen Zeitintervallen
Lieferungsslots werden als 1 Stunde bis 1 Stunde und 30 Minutenintervalle täglich gespeichert. das heißt von 3.00 bis 04.30, von 06.00 Uhr bis 07.30 Uhr, 09.00 Uhr bis 10.30 Uhr und so weiter
id | from
------+---------------------
1 | 2016-01-01 03:00:00
2 | 2016-01-01 04:30:00
3 | 2016-01-01 06:00:00
4 | 2016-01-01 07:30:00
5 | 2016-01-01 09:00:00
6 | 2016-01-01 10:30:00
7 | 2016-01-01 12:00:00
8 | 2016-01-02 03:00:00
9 | 2016-01-02 04:30:00
10 | 2016-01-02 06:00:00
11 | 2016-01-02 07:30:00
12 | 2016-01-02 09:00:00
13 | 2016-01-02 10:30:00
14 | 2016-01-02 12:00:00
Ich versuche, alle delivery_slots
zwischen den Stunden von 03.00 Uhr zu bekommen - 04.30. Ive erhielt die folgenden bisher:
SELECT * FROM delivery_slots WHERE EXTRACT(HOUR FROM delivery_slots.from) >= 3 AND EXTRACT(MINUTE FROM delivery_slots.from) >= 0 AND EXTRACT(HOUR FROM delivery_slots.from) <= 4 AND EXTRACT(MINUTE FROM delivery_slots.from) <= 30;
Welche irgendwie funktioniert. Irgendwie, weil es nur Lieferschächte gibt, die Minuten von 00
haben.
Das ist, weil der letzten where
Zustand (EXTRACT(MINUTE FROM delivery_slots.from) <= 30
)
Ihnen eine Vorstellung zu geben, was ich zu erwarten, ich versuche:
id | from
-------+---------------------
1 | 2016-01-01 03:00:00
2 | 2016-01-01 04:30:00
8 | 2016-01-02 03:00:00
9 | 2016-01-02 04:30:00
15 | 2016-01-03 03:00:00
16 | 2016-01-03 04:30:00
etc...
Gibt es einen besseren Weg, dies zu gehen über?
'da es nur Lieferschächte gibt, die Minuten von 00' haben ... Ich habe gerade lokal auf Postgres getestet, indem ich Ihre Daten verwendet habe, und es hat die gewünschten Daten zurückgegeben. –