2013-09-24 5 views
0

им с помощью CodeIgniter с доктриной, это мой шд:Как получить дату из реестра datetime в доктрине?

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

Проблема заключается в том, что вы даете дату сравнения даты и времени. Поэтому я предполагаю, что он преобразует предоставленную вами дату (2013-03-23) в метку времени (2013-3-23 00:00:00).

Быстрое исправление: у вас могут быть две даты типа «2013-03-23 ​​00:00:00» и «2013-03-23 ​​23:59:59».

Хорошее решение: ваш собственный запрос DQL для вызова функции MySQL date() для преобразования поля timestamp (fecha_publicacion) на сегодняшний день. После этого вы сможете использовать функцию.