2017-12-27 262 views
0

我们如何比较symfony3下的日期和oracle数据库?在symfony3下使用日期和Oracle

$q = $this->createQueryBuilder("u")->leftJoin("u.ru", "r") 
    ->leftJoin("u.emp", "e") 
    ->where("(r.a = 2 or r.a =4) and u.dat > :first and u.dat < :last and e.m=:m") 
    ->orderBy("r.id") 
    ->setParameter("matricule", $personne->getMatricule()) 
    ->setParameter("first", $first) 
    ->setParameter("last", $last); 
return $q->getQuery()->getResult(); 

但这不起作用。我有这样的错误

General error: 1861 OCIStmtExecute: ORA-01861: literal does not match format string (ext\pdo_oci\oci_statement.c:148)

+0

我不使用symfony3;但是,这样的错误消息表明您使用了无效的格式掩码。例如:to_date('2017/12/27','dd.mm.yyyy')会引发该错误。您应该使用to_date('2017/12/27','yyyy/mm/dd')。现在,我不知道如何在代码中使用它(也许它与“first”和“last”有关)? – Littlefoot

+0

我假设symfony像Littlefoot所说的那样正确地传递数据类型。那么,u.dat是约会吗? symfony中'$ first'和'$ last'的日期是?如果不是,那么您正在做一个隐式转换,并依赖于您的NLS_DATE_FORMAT,您不应该这样做,因为它会根据客户端的情况进行更改。 – Ben

+0

Ben,** u.date **在日期TYPE中。 ** $ first **和** $ last **,我用datetime()声明它, –

回答