【问题标题】:MySql query for from date or to date exist select dataMySql 查询从日期或到日期是否存在选择数据
【发布时间】:2019-12-01 04:12:59
【问题描述】:

我有一个名为cubbersclosure 的表,下面添加了数据:

|---------------------|------------------|-------------|-------------|
|      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在表中不一样。所以我不想获取数据。但是这个查询获取这样的数据:

【问题讨论】:

    标签: mysql date select between


    【解决方案1】:

    使用下面的查询

    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'
    

    【讨论】:

    • 感谢您的回答,它工作正常,但如果我选择 2019-07-252019-07-26 获取数据
    • @RameshS 查看更改后的查询
    • 对不起兄弟'2019-07-23'2019-07-26 数据显示。我不想显示数据
    • 您只想获取与您的输入匹配的行 ..? @RameshS 不是在 ..之间?
    • 两个日期应该匹配或者任何一个就足够了..? @RameshS
    【解决方案2】:

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

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

    【讨论】:

    • 我不明白你的评论。请澄清。
    • 实际上,如果我选择2019-07-232019-07-24,我需要显示该数据,因为2019-07-24 存在于closure fromDate
    • 我编辑了答案,使其在fromDate 上关闭。只需根据需要更改不等式即可。
    • 对不起,兄弟还需要检查toDate,例如,如果我选择2019-07-252019-07-28,我需要显示该数据,因为2019-07-25 存在于closure toDate
    • 您的 cmets 与我原来的答案不一致,两端都关闭了。
    猜你喜欢
    • 2023-03-02
    • 2012-02-01
    • 2019-11-15
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-07-09
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多