如何在symfony 2上找到两个日期时间之间的时间

时间:2015-07-03 04:42:28

标签: symfony

这是控制器中的代码

            $time = date('H:i:s');

            $repository = $this->getDoctrine()->getRepository('MainHomeBundle:Tec');

            $count = $repository->createQueryBuilder('t')
                ->select('COUNT(t)')
                ->leftJoin('MainHomeBundle:Clients', 'c', 'WITH', 't.townId = c.townId')
                ->where('t.onservice = 0')
                ->andWhere('t.status = 1')
                ->andWhere('t.datestart < ' . $tiempo)
                ->andWhere('t.dateend > ' . $tiempo)
                ->getQuery()
                ->getSingleScalarResult();

t.datestart和t.dateend是日期时间字段

我找到匹配的记录数

2016-01-01 08:00:00 &gt; $ time &lt; 2015-12-31 20: 00:00

仅比较时间

如果不是一个好主意使用&gt;和&lt;或者在

之间有一些方法

1 个答案:

答案 0 :(得分:0)

如果你想让它们严格大于和小于,那么你已经正确地做到了。还存在一个介于操作之间的操作,但是在检查中也包括等值,即使用检查示例变为:

2016-01-01 08:00:00 >= $time <= 2015-12-31 20:00:00

此外,两者之间的操作通常只是一个语法糖,即它会产生大于和小于(至少在mysql上)的相同查询,因此在性能方面,使用哪一个并不重要。< / p>

仅供参考,您可以像这样使用之间的操作:

->andWhere($tiempo . ' BETWEEN t.datestart AND t.dateend')

并且为了记录,不习惯将参数值直接引用到查询构建器中,而是将它们与setParameter()函数放在一起是一个好习惯(在这种情况下,您可能只是使用自己构造的时间,但仍然总是使用setParameter方法是一个很好的做法