我正在使用带有教义的codeigniter,这是我的bd:
id fecha_publicacion
1 2013-03-23 14:52:06
2 2013-03-23 18:02:06
3 2013-03-23 00:00:00
.. ...
我想做的是从某个日期或特定日期之间搜索这些出版物
问题是,如果我想选择日期为2013-03-23的所有字段,我的查询只返回3erd字段(时间是00:00:00)
我怎样才能得到我想要的东西?我尝试过很多东西但没有成功
public function postsByDates($tipo,$fecha1,$fecha2=''){
if($fecha2 == ''){
$fecha2 = $fecha1;
}
$this->qb = $this->em->createQueryBuilder();
$this->qb->select('p')
->from('models\Post', 'p')
->where(
$this->qb->expr()->eq('p.tipo', '?1'),
$this->qb->expr()->between('p.fecha_publicacion', '?2', '?3')
)
->setParameter(1, $tipo)
->setParameter(2, "$fecha1%")
->setParameter(3, "$fecha2%");
$query = $this->qb->getQuery();
$obj = $query->getResult();
return $obj;
}
答案 0 :(得分:0)
问题是您要提供日期时间/时间戳比较的日期。所以我猜测它会将您提供的日期(2013-03-23)转换为时间戳(2013-3-23 00:00:00)。
快速修复:您可以拥有“2013-03-23 00:00:00”和“2013-03-23 23:59:59”这两个日期。
良好的解决方案:您使用DQL本机查询调用MySQL的date()函数将您的时间戳字段(fecha_publicacion)转换为日期。之后,您将能够使用Between函数。