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
我已更新了答案。我更关注于如何根据两个日期范围选择数据,但这将解决您的问题。