Php 在MySQL的两个日期列之间匹配多个日期

Php 在MySQL的两个日期列之间匹配多个日期,php,mysql,pdo,Php,Mysql,Pdo,我有两列,第一列和第二列。我想用我的查询匹配介于这两个日期之间的任何日期 例如: $period = new DatePeriod(new DateTime('27-02-2017'), new DateInterval('P1D'), new DateTime('02-03-2017'.'+1 day')); foreach ($period as $key => $date) { $data=$date->format("d-m-Y");

我有两列,第一列和第二列。我想用我的查询匹配介于这两个日期之间的任何日期

例如:

$period = new DatePeriod(new DateTime('27-02-2017'), new DateInterval('P1D'), new DateTime('02-03-2017'.'+1 day'));
foreach ($period as $key => $date) {    
           $data=$date->format("d-m-Y");
            //Query SELECT * FROM booking WHERE userid='67' AND ('$data' BETWEEN bookingfrom AND bookingtill)  AND service='test' AND status='0'
}
本期申报表:

DatePeriod Object
(
    [start] => DateTime Object
        (
            [date] => 2017-02-24 00:00:00.000000
            [timezone_type] => 3
            [timezone] => UTC
        )

    [current] => 
    [end] => DateTime Object
        (
            [date] => 2017-03-03 00:00:00.000000
            [timezone_type] => 3
            [timezone] => UTC
        )

    [interval] => DateInterval Object
        (
            [y] => 0
            [m] => 0
            [d] => 1
            [h] => 0
            [i] => 0
            [s] => 0
            [weekday] => 0
            [weekday_behavior] => 0
            [first_last_day_of] => 0
            [invert] => 0
            [days] => 
            [special_type] => 0
            [special_amount] => 0
            [have_weekday_relative] => 0
            [have_special_relative] => 0
        )

    [recurrences] => 1
    [include_start_date] => 1
)

编辑:找到解决方案:
从预订中选择*,其中userid='67'和(STR_TO_DATE('bookingfrom','%d-%m-%Y')='2017-02-24')以及service='test'和status='0'

假设bookingfrom和bookingtill是日期字段:

SELECT * 
FROM booking 
WHERE userid='67' 
AND '".date('Y-m-d', strtotime($date))."' BETWEEN bookingfrom AND bookingtill
AND service='test'
AND status='0'

使用“
date('Y-m-d',strotime($date))
”可以设置在MySql中进行比较的格式。

假设bookingfrom和bookingtill是日期字段:

SELECT * 
FROM booking 
WHERE userid='67' 
AND '".date('Y-m-d', strtotime($date))."' BETWEEN bookingfrom AND bookingtill
AND service='test'
AND status='0'
使用“
date('Y-m-d',strotime($date))
”可以设置在MySql中进行比较的格式。

使用以下查询:

SELECT * FROM booking
    WHERE userid='67' AND $data >= bookingfrom
    AND $data <=bookingtill AND service='test' AND status='0'
从预订中选择*
其中userid='67'和$data>=bookingfrom
和$data使用以下查询:

SELECT * FROM booking
    WHERE userid='67' AND $data >= bookingfrom
    AND $data <=bookingtill AND service='test' AND status='0'
从预订中选择*
其中userid='67'和$data>=bookingfrom
$data
选择*FROM booking,其中userid='67'和bookingfrom=$data和service='test'以及status='0'
选择*FROM booking,其中userid='67'和bookingfrom=$data和service='test'以及status='0'


what is$data?@sumit date from loop like 27-02-2017日期不应该用引号括起来吗?当你使用between子句时,应该有两个日期值,而不是两列。@Suchitkumar我需要检查两列之间的日期。。如果你有任何想法,请回答什么是$data?@sumit date from loop like 27-02-2017不应该吗日期是否用引号括起来?当您使用BETHEN子句时,应该有两个日期值,而不是两列。@Suchitkumar我需要检查两列之间的日期。。如果您有任何想法,请填写答案完成。插入解释。请删除downvote。您必须在两端进行日期转换。。见OP的编辑完成。插入解释。请删除downvote。您必须在两端进行日期转换。。参见OP的编辑您错过了一个和:
userid='67'$data
我已经更新了答案。我更关注如何根据两个日期范围选择数据,但这将解决您的问题。您错过了一个和:
userid='67'$data
我已更新了答案。我更关注于如何根据两个日期范围选择数据,但这将解决您的问题。