2016-09-30 2 views
0

Я использую Symfony и Doctrine. Я хотел бы получить время, прошедшее между двумя отметками времени. Вот часть моего запроса (оба a.date и q.date являются тип: временная метка):Как получить время, прошедшее между секундами между двумя временными метками в dql?

$qb->select('a.date - q.date AS elapsed_time'); 

Это дает численный результат, но я не могу сказать, что эти единицы. 9 секунд дали мне 49, а 60 секунд дали мне 99; Я не могу понять это.

Я попытался это тоже:

$qb->select('DATE_DIFF(a.date, q.date) AS elapsed_time'); 

Это работает, но дает результат в днях. Мне действительно нужны минуты или секунды.

ответ

1

Используйте вместо этого UNIX_TIMESTAMP. попробуйте следующее:

$qb->select('(UNIX_TIMESTAMP(a.date) - UNIX_TIMESTAMP(q.date)) AS elapsed_time'); 
+0

Получил ошибку: «Ожидаемая известная функция, полученная« UNIX_TIMESTAMP »« – Travis

+0

@billyhafiz, потому что у доктрины нет встроенной функции UNIX_TIMESTAMP. вам нужно переключиться на sql или создать определенную пользователем функцию UNIX_TIMESTAMP http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#adding-your- own-functions-to-the-dql-language –

+0

Я получил это для работы с: https://github.com/beberlei/DoctrineExtensions – Travis

0

Вам необходимо использовать функцию DATE_FORMAT.

$qb->select(DATE_FORMAT(DATE_DIFF(a.date, q.date), '%s') AS elapsed_time); 

Попробуйте это. У меня сейчас нет консоли mysql, но я думаю, что это сработает.

+0

Получил ошибку: «Ожидаемая известная функция, полученная« DATE_FORMAT »» – Travis