【问题标题】:Getting result from entered date between two columns从两列之间输入的日期获取结果
【发布时间】:2018-12-16 11:34:36
【问题描述】:

我需要有关订单预订验证方面的帮助。我有物品的餐桌预订,我需要在特定日期之间获取所有物品。

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

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"

我需要什么:

现在,如果我想更改日期或向订单添加新商品,我需要验证预订订单中是否有可用数量。但是我的查询在 fromto 列之间缺少一个条件,例如 mydate。有可能吗?

所以我需要查询我只知道 from 和 to 但是,如果是在表中的两个日期之间,我不知道这个的写条件。

示例:

查询

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

有可能吗?

非常感谢!

【问题讨论】:

    标签: postgresql date timestamp


    【解决方案1】:

    据我了解,你想要OVERLAPS

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

    Demo

    【讨论】:

    • 绝对!你太棒了。谢谢
    猜你喜欢
    • 2012-04-27
    • 2010-10-05
    • 2015-01-08
    • 2021-10-04
    • 2018-09-17
    • 2015-10-02
    • 2018-01-11
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多