Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/276.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 检查两个日期之间是否包含期间_Php_Mysql_Sql_Date_Datetime - Fatal编程技术网

Php 检查两个日期之间是否包含期间

Php 检查两个日期之间是否包含期间,php,mysql,sql,date,datetime,Php,Mysql,Sql,Date,Datetime,我有一个mysql表,如下所示: | ID | ID_period | date_start | date_end | | 1 | 1 | 0000-07-01 | 0000-08-31 | | 2 | 2 | 0000-09-01 | 0000-10-30 | | 3 | 3 | 0000-11-01 | 0000-12-28 | | 4 | 4 | 0000-11-01 | 0000-0

我有一个mysql表,如下所示:

   | ID | ID_period | date_start |  date_end  |
   | 1  |   1       | 0000-07-01 | 0000-08-31 |
   | 2  |   2       | 0000-09-01 | 0000-10-30 |
   | 3  |   3       | 0000-11-01 | 0000-12-28 |
   | 4  |   4       | 0000-11-01 | 0000-03-31 |
如何选择此期间0000/07/14-0000/08/25之间包含的ID

日期\开始和日期\结束列为日期格式


问题是,如果我搜索一个时期(包括和相交),即:从0000-12-12到0000-01-25,我从select中得到0条记录,我猜这一年是“0000”。。我怎样才能修好它

另一个问题是,如果我搜索像11-01到12-31这样的时间段,我会得到0个结果。。因为最后一天是12月28日。。但是如果我搜索11-01到12-31这段时间,是因为我想要包括所有记录。。所以我想得到id=3和id=4的记录

目前,我正在使用以下查询:

SELECT ... WHERE '12' BETWEEN MONTH(date_start) and MONTH(date_end)
AND '15' BETWEEN DAY(date_start) and DAY(date_end)
AND '03' BETWEEN MONTH(date_start) and MONTH(date_end)
AND '28' BETWEEN DAY(date_start) and DAY(date_end)
选择*
从mytable
其中日期从“0000-07-14”到“0000-08-25”之间开始
或日期在“0000-07-14”和“0000-08-25”之间结束
或(开始日期'0000-08-25')
选择*
从mytable
其中日期从“0000-07-14”到“0000-08-25”之间开始
或日期在“0000-07-14”和“0000-08-25”之间结束
或(开始日期'0000-08-25')

您是指与该期间重叠或完全包含在该期间内的所有ID?在您的示例中,这似乎并不重要,但在您的实际数据中可能会有。您所说的“包含”是什么意思?完全在或相交?问题是,如果我搜索一个时期(包括和相交),即:从0000-12-12到0000-01-25,我从select中得到0条记录,我猜这一年是“0000”。。我如何修复它?您是指与该时段重叠或完全包含在该时段中的所有ID?在您的示例中,这似乎并不重要,但在您的实际数据中可能会有。您所说的“包含”是什么意思?完全在或相交?问题是,如果我搜索一个时期(包括和相交),即:从0000-12-12到0000-01-25,我从select中得到0条记录,我猜这一年是“0000”。。我如何修复它?问题是,如果我搜索一个周期(包含并相交),即:从0000-12-12到0000-01-25,我从select中得到0条记录,我猜这一年是“0000”。。我该怎么修?12-12到01-25?结束日期可以小于开始日期吗?废话。。那么如何找到像12-12到01-15这样的周期的记录呢?我总是在MSSQL中做
date\u startoth\u date\u start
。但是,MySQL似乎更喜欢这种解决方案。奇怪。。。我改天再调查这个计划。谢谢注:MySQL的速度太慢了,所以我寻找了另一个答案。问题是,如果我搜索一个周期(包含并相交),即:从0000-12-12到0000-01-25,我从select中得到0条记录,我猜这一年是“0000”。。我该怎么修?12-12到01-25?结束日期可以小于开始日期吗?废话。。那么如何找到像12-12到01-15这样的周期的记录呢?我总是在MSSQL中做
date\u startoth\u date\u start
。但是,MySQL似乎更喜欢这种解决方案。奇怪。。。我改天再调查这个计划。谢谢注:MySQL的速度太慢了,我找了另一个方法,找到了这个答案。
SELECT  *
FROM    mytable
WHERE   date_start BETWEEN '0000-07-14' AND '0000-08-25'
        OR date_end BETWEEN '0000-07-14' AND '0000-08-25'
        OR (date_start<'0000-07-14' AND date_end>'0000-08-25')