2014-01-02 5 views
0

Как рассчитать разницу во времени между двумя полями даты и времени. Здесь я хочу найти разницу во времени ept.endedTime и ept.startedTime.DQL datetime разница

$query = $em->createQuery('SELECT t.code, t.name, t.description, ept.endedTime, ept.startedTime, DATE_DIFF(ept.endedTime, ept.startedTime)' 
. ' FROM AdrotecCompanyBundle:EmployeeProjectTask ept' 
. ' JOIN ept.task t' 
. ' JOIN ept.employeeProject ep' 
. ' JOIN ep.employee e' 
. ' WHERE ep.project = :pId'); 

ответ

1

Используйте this , чтобы написать определенные пользователем функции DQL затем использовать его.

<?php 
class DateDiff extends FunctionNode 
{ 
    // (1) 
    public $firstDateExpression = null; 
    public $secondDateExpression = null; 

    public function parse(\Doctrine\ORM\Query\Parser $parser) 
    { 
     $parser->match(Lexer::T_IDENTIFIER); // (2) 
     $parser->match(Lexer::T_OPEN_PARENTHESIS); // (3) 
     $this->firstDateExpression = $parser->ArithmeticPrimary(); // (4) 
     $parser->match(Lexer::T_COMMA); // (5) 
     $this->secondDateExpression = $parser->ArithmeticPrimary(); // (6) 
     $parser->match(Lexer::T_CLOSE_PARENTHESIS); // (3) 
    } 

    public function getSql(\Doctrine\ORM\Query\SqlWalker $sqlWalker) 
    { 
     return 'DATEDIFF(' . 
      $this->firstDateExpression->dispatch($sqlWalker) . ', ' . 
      $this->secondDateExpression->dispatch($sqlWalker) . 
     ')'; // (7) 
    } 
} 
Смежные вопросы