比较CakePHP中的DateTime

时间:2011-02-28 23:53:53

标签: datetime cakephp

我在CakePHP中有一个查询,它有一个名为DropIn.drop_in_time的存储“datetime”字段。我想只找到DropIn.drop_in_time is > NOW()的条目,但我很难做到这一点。

条件DropIn.drop_in_time >' => 'NOW()未在下面的查询中获得正确的结果。有没有更好的方法呢?

$requests = $this->DropIn->find('all', array(
            'conditions' => array('DropIn.drop_in_time >' => 'NOW()', 'or' => array(array('DropIn.user_id' => $this->Auth->user('id')), array('DropIn.id' => $drop_in_ids))),
            'order'=>array('DropIn.created'=>'DESC')));

3 个答案:

答案 0 :(得分:9)

如果您将值分隔为'DropIn.drop_in_time' => 'NOW()',则'NOW()'将表示字面值字符串"NOW()"。只需将其写为一个SQL片段:'DropIn.drop_in_time > NOW()'。或者,使用'DropIn.drop_in_time >' => date('Y-m-d H:i:s')

答案 1 :(得分:0)

如果您真的想将DB表达式放入CakePHP查找中,可以使用表达式方法:

'DropIn.drop_in_time.' => $db->expression('CURDATE()'); 

然而,这有点失去了框架提供的数据库抽象的意义,所以按照deceze的建议并将其与date('Y-m-d H:i:s')进行比较

答案 2 :(得分:0)

使用DboSource :: expression('NOW')而不是仅使用NOW()