微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

Mysql 查询 - 返回两个日期范围相交的日期

如何解决Mysql 查询 - 返回两个日期范围相交的日期

我正在尝试编写一个 MysqL 查询,其中两个日期范围相交。

例如,我想从存在给定日期的表中返回一行。

所以我的用户可以选择两个日期“开始日期”、“结束日期”

我有一个查找表

id,fromdate,tildate

在这个表中我有 2 行

id:1,fromdate:'2021-01-03',tildate:'2021-01-05'
id:2,fromdate:'2021-01-05',tildate:'2021-01-08'

现在如果用户使用值查询数据库

startdate: '2021-01-01',enddate '2021-01-02' - Should return nothing
startdate: '2021-01-03',enddate '2021-01-04' - Should return 1,since there is an intersection
startdate: '2021-01-02',enddate '2021-01-06' - Should return id 1 and 2,since there is an intersection in both
startdate: '2021-01-05',enddate '2021-01-05' - Should return id 1 and 2,since there is an intersection in both
startdate: '2021-01-07',enddate '2021-01-08' - Should return 2,since there is an intersection

我试过这个查询

SELECT 
   id,todate FROM table_name 
WHERE 
    ('2021-01-02' >= fromDate
     AND '2021-01-02' <= toDate)
OR
    ('2021-01-06' >= fromDate
    AND '2021-01-06' <= toDate)

这不起作用。

希望这是有道理的

解决方法

试试这个:

SELECT *
FROM table_name 
WHERE 
    ('2021-01-02' >= fromDate
     AND '2021-01-02' <= toDate)
OR
    ('2021-01-06' >= fromDate
    AND '2021-01-06' <= toDate)

您在查询中到处都使用了 fromDate,这可能是问题所在

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。