【发布时间】:2018-05-11 16:46:38
【问题描述】:
我使用 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 进行比较,因为如果@987654326 一天中的小时@ > dateTo 小时我在$resultQuery 之前的所有用户@ 987654329@ 不包括dateTo 天。
如果你让所有用户得到requestDate => 2017-11-21 结果将是requestDate > 2017-11-21 导致dateTo 的小时是00:00:00
【问题讨论】:
-
为什么不只比较日期?例如
andWhere("DATE(u.requestDate)<= :to")->setParameters(['to' => $entity['dateTo']])这是假设dateTo实际上是日期而不是日期时间 -
好的,我会试试的
-
我有这个错误 [Syntax Error] line 0, col 43: Error: Expected known function, got 'DATE'
标签: php sql-server symfony date datetime