2017-08-08 21 views
1

MySQLの日付はDATETIMEの形式で保存されています。だから、Doctrine QueryBuilderのwhere節にdate()をどのように使うかを知りたいです。たとえば、2013-02-01 12:51:17はMySQLの日付です。しかし、私は日付だけを取得する必要があります。これは私がしようとしたものです:あなたは、あなたのwhere句で「日付」を必要としないDoctrine QueryBuilderのMySQL DATETIMEからの復帰日

QueryException: [Syntax Error]: Error: Expected Doctrine\ORM\Query\Lexer::T_OPEN_PARENTHESIS, got 'date'

+0

https://stackoverflow.com/questions/25883616/how-can-i-use-date-in-doctrine-2-dql – Cerad

答えて

-1

$qb = $this->getEntityManager()->createQueryBuilder() 
    ->select('t.balance','a.id','t.date') 
    ->from('TestMainBundle:Transaction','t')    
    ->groupBy('a.id') 
    ->orderBy('a.id') 
    ->where("t.date in date('t.date') "); 

return $qb->getQuery()->getResult(); 

私は次のエラーを受け取りました。

ジュストこのようにそれを削除します。

->where('t.date in (:yourwanteddate)') 
->setParameter('yourwanteddate', '2013-02-01 12:51:17'); 
+1

日の間に微妙な(しかし、しばしば大きな)違いがありますし、日付時刻。 – Cerad

+0

しかし、私はdatetimeからの日付に基づいてクエリを取得する必要があります。mysqlはdatetime形式です..この日付time.iの日付を取得する必要があります: - > andWhere(date( 't.date')in (:yourwanteddate) ') - > setParameter(' yourwanteddate '、' 2013-02-01 '); – Programmer

0

こんにちはあなたのproblemeを修正するためにSUBSTRINGを使用することができます

->where('SUBSTRING(t.date, 1, 10) IN (:param)') 
->setParameter('param', array('2017-04-06')) 
1

を、それがコメントで指摘されているとして、あなたはMySQL固有の使用することはできませんdate()またはdate_format()はDoctrineで機能します。

しかし、日時フィールドに特定の日付を検索する特定のケースのために、あなたは文字列のように、日付を扱うことができ、したがって、あなたが

But I need to retreive only the date

のとおりLIKEオペレータ

->Where('t.date LIKE :date') 
->setParameter(':date', "$date%") 

を使用format("Y-m-d")メソッドを使用して戻り値をフォーマットするだけです。すなわち

echo $row->getDate()->format("Y-m-d"); 
関連する問題