Получение результата от введенной даты между двумя столбцами - PullRequest
0 голосов
/ 16 декабря 2018

Мне нужна помощь с проверкой при бронировании заказа.У меня есть резервирование таблицы для элементов, и мне нужно получить все элементы между определенными датами.

Я использую метку времени, потому что мне нужно получать все заказы с точностью до минуты.

tbl_reservation

orderid | itemid | quantity | from | to

Order 1: from 16-12-2018 00:00 to 23-12-2018 23:59

Order 2: from 21-12-2018 20:00 to 24-12-2018 20:01

Мой запрос:

SELECT itemid,
       SUM(quantity) AS sum
FROM tbl_order_reservation
WHERE ( "orderid" <> '18112021270001hcr1' ) AND ( "itemid" IN (
     '18111318230001hlk1'
) ) AND (
     "from" >= '2018-11-21 20:00:00' 
AND "to" <= '2018-11-24 20:01:00'  OR "from" BETWEEN '2018-11-21 20:00:00'
     AND '2018-11-24 20:01:00' OR
  "to" BETWEEN '2018-11-21 20:00:00' AND '2018-11-24 20:01:00'
)
GROUP BY "itemid"

Что мне нужно:

Теперь, если я хочу изменить дату или добавить новый товар в заказ, и мне нужно подтвердить, доступно ли количество взаказ бронирования.Но в моем запросе отсутствует одно условие, например mydate между из и до столбцов.Это возможно?

Поэтому мне нужен запрос, в котором я знаю только от и до, но, если между двумя датами из таблицы, я не знаю условия записи для этого.

Пример:

query

from 17-12-2018 14:00 to 17-12-2018 17:00

и этот запрос должен приводить к порядку 1, поэтому порядок где date from 16-12-2018 00:00 to 23-12-2018 23:59

Возможно?

Большое спасибо!

1 Ответ

0 голосов
/ 16 декабря 2018

Из того, что я понял, вы хотите OVERLAPS

SELECT * FROM  tbl_reservation
        WHERE OVERLAPS('17-12-2018 14:00'::TIMESTAMP, 
                       '17-12-2018 17:00'::TIMESTAMP, 
                      "from", "to") ;

Демо

...