从两列之间的输入日期中获取结果

时间:2018-12-16 11:34:36

标签: postgresql date timestamp

我需要确认预订方面的帮助。我已经预订了项目,我需要在特定日期之间获取所有项目。

我使用时间戳记是因为我需要以分钟为单位获取所有订单。

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"

我需要什么:

现在,如果我想更改日期或向订单添加新项目,并且需要确认预订订单中是否有可用数量。但是我的查询在 from to 列之间缺少 mydate 这样的条件。有可能吗?

所以我需要查询我只知道从和到的地方,但是如果在表中的两个日期之间,我不知道为此写条件。

示例:

查询

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 :(得分:1)

据我了解,您想要OVERLAPS

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

Demo