简体   繁体   English

SQL查询按日期范围查找两个日期之间的所有数据

[英]SQL query to find all Data by date range which falls between two dates

Task Table
id  name    start_date  expiry_date
1   Task 1  09-05-2016  11-05-2016
2   Task 2  10-05-2016  13-05-2016
3   Task 3  11-05-2016  12-05-2016 
4   Task 4  17-05-2016  20-05-2016
5   Task 5  18-05-2016  26-05-2016

I need to find all the task from a given date range where each date from range falls between start_date and expiry_date.我需要找到给定日期范围内的所有任务,其中范围内的每个日期都在 start_date 和 expiry_date 之间。 suppose input is 10-05-2016 to 12-05-2016.假设输入是 10-05-2016 到 12-05-2016。

id  name    start_date  expiry_date
1   Task 1  09-05-2016  11-05-2016
2   Task 2  10-05-2016  13-05-2016
3   Task 3  11-05-2016  12-05-2016 

You can use this condition to check if two date ranges overlap :您可以使用此条件来检查两个日期范围是否重叠

WHERE 
    StartA <= EndB 
    AND EndA >= StartB

Your query should be:您的查询应该是:

SELECT *
FROM tbl
WHERE
    start_date <= '12-05-2016'
    AND expiry_date >= '10-05-2016'

希望 start_date 总是小于 expiry_date

SELECT * FROM Task WHERE start_date <= '12-05-2016' AND expiry_date >= '10-05-2016'

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM