小编med*_*kch的帖子

如何在Doctrine2 Query Builder中使用'interval'

在我的Symfony2存储库中,我想从调度表中获取已经启动但尚未完成的对象.对象内的区间应该是"未完成",应该作为变量传递.

使用纯SQL,它的工作方式如下:

SELECT * FROM slots rbs 
  WHERE rbs.rundate = '2012-08-13' 
  AND rbs.runtime <= '11:05:00' 
  AND '11:05:00' <= rbs.runtime + interval '300 seconds'
  ORDER BY rbs.rundate DESC, rbs.runtime DESC
Run Code Online (Sandbox Code Playgroud)

我可以使用DQL/Query Builder实现相同的功能吗?

这是我到目前为止:

$qb = $this->createQueryBuilder('rbs');
$qb->where(
    $qb->expr()->andX(
         $qb->expr()->eq('rbs.rundate', ':date'),
         $qb->expr()->lte('rbs.runtime', ':time'),
         'rbs.runtime + interval 300 seconds >= :time'
        )
    )
  ->orderBy('rbs.rundate', 'DESC')
  ->addOrderBy('rbs.runtime', 'DESC')
  ->setParameter('date', date('Y-m-d'))
  ->setParameter('time', date('H:i:s'))
Run Code Online (Sandbox Code Playgroud)

但是这会返回以下错误:

[Doctrine\ORM\Query\QueryException]                                                 
[Syntax Error] line 0, col 139: Error: Expected =, <, <=, <>, >, >=, !=, got '300'
Run Code Online (Sandbox Code Playgroud)

我发现Doctrine2/DQL 不支持'interval',这也在 …

php postgresql query-builder symfony doctrine-orm

9
推荐指数
3
解决办法
1万
查看次数

date()返回不一致的时间

我使用PHP 5.3.8在Mac Book Pro上的本地apache2网络服务器上安装了以下PHP代码,默认时区设置为欧洲/苏黎世:

$now = time();
$in5min = $now + 300;

echo "now: " . date('H:m:s', $now);
echo "<br>in 5 min: " . date('H:m:s', $in5min);

echo "<br>now using date only: " . date('H:m:s');
Run Code Online (Sandbox Code Playgroud)

结果如下(2012年7月26日18:16:12运行):

now: 18:07:01  
in 5 min: 18:07:01  
now using date only: 18:07:01 
Run Code Online (Sandbox Code Playgroud)

请注意,我可以刷新页面 - 秒数更改,小时和分钟保持不变.所以5分钟后它仍然是18:07.

我的网络服务器设置有什么问题?为什么时间计算不起作用?

php datetime

1
推荐指数
1
解决办法
159
查看次数