Php 用于使用日期范围查找日期范围的SQL

Php 用于使用日期范围查找日期范围的SQL,php,mysql,date,Php,Mysql,Date,好的,这有点让人困惑(因此我请求帮助的原因) 我在MySQL数据库中有一个表,如下所示: +-----+-------------+------------+------------+---------------+---------+-----------+---------+ | id | supplier_id | start_date | end_date | days_attended | user_id | client_id | trashed | +-----+------

好的,这有点让人困惑(因此我请求帮助的原因)

我在MySQL数据库中有一个表,如下所示:

+-----+-------------+------------+------------+---------------+---------+-----------+---------+
| id  | supplier_id | start_date | end_date   | days_attended | user_id | client_id | trashed |
+-----+-------------+------------+------------+---------------+---------+-----------+---------+
|   1 |          15 | 1410098400 | 1410703200 |             2 |       7 |       424 |       0 |
|   2 |          84 | 1411912800 | 1420117200 |             3 |       7 |       395 |       0 |
|   3 |         183 | 1390827600 | 1418907600 |             2 |       7 |        96 |       0 |
|   4 |          85 | 1412431200 | 1419512400 |             5 |       7 |       105 |       0 |
|   5 |         168 | 1411912800 | 1412258400 |             3 |       7 |        53 |       0 |
我的困境是,我想从这个表中创建一个报告,该报告以日期范围作为输入,并返回该日期范围内的日期列表

如您所见,每行都有一个开始和结束日期。因此,我需要一个SQL查询,它将使用用户选择的两个日期在每行的这两个日期内搜索一个日期


i、 e.用户选择日期范围:2015年9月21日至2015年12月21日。然后,查询将使用表中的现有日期范围查找这些日期之间的日期。

如果要检查开始日期或结束日期是否在用户的开始日期和结束日期之间

您可以在此处插入用户开始日期用户结束日期的用户值:

SELECT * FROM table 
WHERE (start_date >= user_start_date AND start_date <= user_end_date) 
OR (end_date >= user_start_date AND end_date <= user_end_date);
从表中选择*

其中(开始日期>=用户开始日期和开始日期=用户开始日期和结束日期如果要检查开始日期或结束日期是否在用户的开始日期和结束日期之间

您可以在此处插入用户开始日期用户结束日期的用户值:

SELECT * FROM table 
WHERE (start_date >= user_start_date AND start_date <= user_end_date) 
OR (end_date >= user_start_date AND end_date <= user_end_date);
从表中选择*
其中(开始日期>=用户开始日期和开始日期=用户开始日期和结束日期请尝试此操作

SELECT * FROM table WHERE (
start_date >= UNIX_TIMESTAMP(STR_TO_DATE(var_date_1, '%d/%M/%Y')) AND 
end_date <= UNIX_TIMESTAMP(STR_TO_DATE(var_date_2, '%d/%M/%Y'))
) ;
从表中选择*,其中(
开始日期>=UNIX时间戳(STR_TO_date(var_date_1,'%d/%M/%Y'))和
结束日期请试试这个

SELECT * FROM table WHERE (
start_date >= UNIX_TIMESTAMP(STR_TO_DATE(var_date_1, '%d/%M/%Y')) AND 
end_date <= UNIX_TIMESTAMP(STR_TO_DATE(var_date_2, '%d/%M/%Y'))
) ;
从表中选择*,其中(
开始日期>=UNIX时间戳(STR_TO_date(var_date_1,'%d/%M/%Y'))和

结束日期如何处理重叠的范围?未完全包含在使用单独指定的范围内。是否希望表中给出的开始日期和结束日期都在用户指定的两个日期之间?表中的两个日期不必都在指定的日期内。只要一个日期在表日期之间或任何日期之间。如何处理重叠范围?未完全包含在使用单独指定的范围内。是否希望表中给定的开始日期和结束日期都在用户指定的两个日期之间?表中的两个日期不必都在指定的日期内。只要一个日期在表中日期之间,或者两个日期之间的任何日期都在表中。