Поиск только по времени в поле DateTime в Symfony2 и Doctrine

Я использую Symfony 2 и Doctrine. В моей базе данных MySQL у меня есть поле типа DateTime. В моем файле репозитория, используя QueryBuilder, я хотел бы искать в этой таблице только по дате (без времени) и только по времени (без даты) в моем предложении Where.

Как я могу это осознать?


person JohnDoe66    schedule 17.06.2013    source источник
comment
вы можете использовать собственный запрос, а затем привязать его к сущности   -  person Nisam    schedule 17.06.2013


Ответы (2)


Вы можете расширить и зарегистрировать функцию DATE() в доктрине 2, чтобы поиграть с DQL. проверьте это решение.

Теперь, если вы не хотите расширять доктрину2, вот мои решения:

Поиск по дате:

Вы можете получить интервал между датой и временем начала дня и датой и временем его окончания, я уже отвечаю здесь.

Это самое чистое решение для даты (я думаю)!

Теперь еще одно простое решение - сравнить поле даты и времени как строку с оператором LIKE, так что вы также можете сделать это:

$query = $repository->createQueryBuilder('u')->where('u.createdAt LIKE :date')
        ->setParameter('date', '2013-05-06%')
        ->getQuery();

        $users = $query->getResult();

Поиск по часам:

Я не знаю другого решения с DQL, кроме сравнения как строки (если вы не расширите доктрину с помощью DATE), вот код:

$query = $um->getRepository()->createQueryBuilder('u')->where('u.createdAt LIKE :date')
        ->setParameter('date', '____-__-__ 10:45:__')
        ->getQuery();

Напоминаем, что "_" (подчеркивание) означает 1 символ (и любой символ!).

Выбери свое решение ;)

person Sybio    schedule 17.06.2013
comment
Большое спасибо за ваш ответ, вы гений, это работает отлично! Наконец, я расширяю и регистрирую функции DATE() и TIME(). Я также пробовал другие ваши решения, и все в порядке! - person JohnDoe66; 18.06.2013

Часть моего кода, который работает для меня:

$qb->andWhere('s.createdAt LIKE :createdAt');
$qb->setParameter('createdAt', $startDate->format("Y-m-d") . "%");
person Lackeeee    schedule 15.04.2015