如何获取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');
答
您需要使用函数DATE_FORMAT。
$qb->select(DATE_FORMAT(DATE_DIFF(a.date, q.date), '%s') AS elapsed_time);
试试这个。我现在没有mysql控制台,但我认为它会工作。
+0
得到一个错误:“预期的已知函数,得到'DATE_FORMAT'” – Travis
出现错误:“预期的已知函数,得到'UNIX_TIMESTAMP'” – Travis
@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语言 –
我得到这个工作:https://github.com/beberlei/DoctrineExtensions – Travis