MySql 查询起始日期或截止日期存在 select 数据

MySql query for from date or to date exist select data

我有一个名为 cubbersclosure 的 table,数据添加如下:

|---------------------|------------------|-------------|-------------|
|      closureId      |     cubbersId    |  fromDate   |  toDate     |
|---------------------|------------------|-------------|-------------|
|          3          |         3        |  2019-07-24 | 2019-07-25  |
|---------------------|------------------|-------------|-------------|

我需要通过以下场景获取数据:

  1. 如果我的查询中只有 fromDatetoDate 存在,则获取数据。

例如: SELECT * FROM cubbersclosure cc WHERE CAST('2019-07-23' as date) <= cc.toDate AND CAST('2019-07-26' as date) >= cc.fromDate AND cc.cubbersId = '3'

上面的查询 fromDatetoDate 在 table 中不一样。所以我不想获取数据。但是这个查询像这样获取数据:

使用下面的查询

SELECT * FROM cubbersclosure cc WHERE (cc.toDate=CAST('2019-07-23' as date)
OR cc.toDate=CAST('2019-07-26' as date) OR cc.fromDate=CAST('2019-07-23' as date)
OR cc.fromDate=CAST('2019-07-26' as date)) AND cc.cubbersId = '3'

我怀疑您想要 return 给定 cubbersId 的记录,这些记录不与 from/to 日期范围重叠。您可以尝试以下查询:

SELECT *
FROM cubbersclosure
WHERE
    (toDate <= '2019-07-23' OR fromDate >= '2019-07-26') AND
    cubbersId = 3;