如何获取dql中两个时间戳之间的时间流逝秒数?

问题描述:

我正在使用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'); 

这工作,但给出结果的日子。我真的需要几分钟或几秒钟。

改为使用UNIX_TIMESTAMP。试试这个:

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

出现错误:“预期的已知函数,得到'UNIX_TIMESTAMP'” – Travis

+0

@billyhafiz这是因为doctrine没有内置的UNIX_TIMESTAMP函数。你需要切换到SQL或创建用户定义的函数UNIX_TIMESTAMP http://docs.doctrine-project.org/projects/doctrine-orm/en/latest/reference/dql-doctrine-query-language.html#adding-your-自己的功能到这个dql语言 –

+0

我得到这个工作:https://github.com/beberlei/DoctrineExtensions – Travis

您需要使用函数DATE_FORMAT。

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

试试这个。我现在没有mysql控制台,但我认为它会工作。

+0

得到一个错误:“预期的已知函数,得到'DATE_FORMAT'” – Travis