im使用dql在PHP中编码一些查询,以获取数据库的数据,这取决于下一种形式设置的实体,问题是我比较2个日期,结果比设置的一天少于一天一天,因为第二个日期小时在00:00:00固定,结果比我在形式中提取的一天要少一天:
形式实体:
User.php on line 7719:
array:5 [▼
"dateFrom" => null
"dateTo" => DateTime {#978 ▼
+"date": "2017-11-21 00:00:00.000000"
+"timezone_type": 3
+"timezone": "UTC"
}
"name" => null
"surname" => null
"car" => null
]
代码示例:
if ($form->get('button')->isClicked()) {
$entity = $form->getData();
$query = $em->getRepository('AppBundle:User')->createQueryBuilder('u');
if ($entity['dateTo']) {
$query->andWhere('u.requestDate<= :to')
->setParameters(['to' => $entity['dateTo']]);
}
$resultQuery = $query->getQuery()->getResult();
查询结果:
UserController.php on line 7772:
array:9 [▼
0 => User {#3292 ▼
-requestDate => DateTime {#3289 ▼
+"date": "2017-11-16 12:25:46.000000"
+"timezone_type": 3
+"timezone": "UTC"
}
-name: "Patrick"
-surname: "Jhonson"
-car: "Mercedes"
}
1 => User {#3296 ▼
-requestDate => DateTime {#3777 ▼
+"date": "2017-11-17 13:30:15.000000"
+"timezone_type": 3
+"timezone": "UTC"
}
-name: "Peter"
-surname: "Jhonson"
-car: "Jaguar"
}
2 => User {#3299 ▼
-requestDate => DateTime {#3790 ▼
+"date": "2017-11-21 06:51:29.000000"
+"timezone_type": 3
+"timezone": "UTC"
}
-name: "Anna"
-surname: "Stark"
-car: "Seat"
}
问题是将任何日期与日期进行比较:" ----/-/- 00:00:00.000000"当我将dateTo
设置为"创建日期"比较的日期与00:00:00小时的日期时,我需要将此data
与23:59:59进行比较,因为如果requestDate
> dateTo
小时的小时,我会得到在$resultQuery
中,所有用户在dateTo
之前,不包括dateTo
天。
如果y放置 requestDate
=> 2017-11-21
的所有用户,结果将为 requestDate
> 2017-11-21
原因 dateTo
的小时为00:00:00:00
我假设$entity['dateTo']
是DateTime
类的实例,以使结果与您的dateTo
参数匹配,无论您可以做一个简单的技巧,只需将一天添加到您的参数和参数和更改比较标准从<=
到<
,因此它将为您提供预期的输出
$dateTo = $entity['dateTo'];
if ($dateTo) {
$dateTo->add(new DateInterval('P1D'));
$query->andWhere('u.requestDate < :to')
->setParameters(['to' => $dateTo]);
}