我需要比较DATE格式和DATETIME。
之前的ZF 2.3.5,以下代码工作正常:
$select->where('DATE(arrival_date) <= DATE(NOW())');
$select->where('DATE(departure_date) >= DATE(NOW())');
$select->where('enable = true');
使用ZF 2.4.2+,它不再工作并产生以下错误:
无法从接口Zend'Db'Sql'Predicate'PredicateInterface继承先前继承的常量TYPE_IDENTIFIER或重写常量TYPE_IDENTIFIER
我已经尝试了以下操作(没有错误)。问题是"arrival_date"是DATETIME格式,我只需要与DATE进行比较。
$where = new Zend'Db'Sql'Where();
$where->lessThanOrEqualTo('arrival_date', date('Y-m-d'));
$where->greaterThanOrEqualTo('arrival_date', date('Y-m-d'));
$where->equalTo('enable', true);
$select->where($where);
理想情况下,这段代码应该可以工作,但事实并非如此:
$select->where(new Zend'Db'Sql'Predicate'Expression('DATE(arrival_time) <= ?', 'DATE(NOW())'));
我迷路了,你知道吗?
就像这样使用Expression:
$select->where(
array(
new 'Zend'Db'Sql'Predicate'Expression("DATE(arrival_date) <= DATE(NOW())")
)
);
不需要?就像你一样。?您的参数将被转义,它将无法与表达式一起工作。只能使用参数,比如PHP日期时间之类的。