Php 检查两个日期之间是否包含期间
我有一个mysql表,如下所示: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
| 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')