У меня есть delivery slots
, который имеет столбец from
(datetime
).Как получить строки между временными интервалами
Слоты для хранения хранятся в течение 1 часа до 1 часа и 30-минутных интервалов, ежедневно. т.е. 3:00 утра-4:30 утра, 6:00 утра-7:30 утра, 9:00 утра-10:30 утра и так далее
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
Я пытаюсь получить все delivery_slots
между часами 3:00 утра - 4.30 утра. Ive получил следующий до сих пор:
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;
Какие любопытное работы. Kinda, потому что это только возврат слотов доставки, которые имеют минуты 00
.
Это потому, что последнего where
условия (EXTRACT(MINUTE FROM delivery_slots.from) <= 30
)
Чтобы дать вам представление о том, что я пытаюсь ожидать:
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...
Есть ли лучший способ пойти по этому поводу?
'потому что он только возвращает слоты для доставки, у которых есть минуты 00' ... Я просто тестировал локально на Postgres, используя ваши данные, и он возвращал нужные вам данные. –