2013-06-17 1 views
8

私はSymfony 2とDoctrineを使用しています。私のデータベースMySQLには、タイプDateTimeのフィールドがあります。私のリポジトリファイルでは、QueryBuilderを使用して、このテーブルで日付(時間なし)と時刻(日付なし)のみで私のWhere節で検索したいと思います。Symfony2とDoctrineのDateTimeフィールドで時刻によってのみ検索する

どうすれば実現できますか?

+0

ネイティブクエリを使用することができますし、それが実体 – Nisam

答えて

16

DATE()関数をdoctrine2に拡張して登録し、DQLを使用して再生することができます。これはsolutionにチェックしてください。あなたが一日の始まりの日時と日時の間の間隔を取得することができます

:日付に基づい

検索:あなたはここに、私の解決策をdoctrine2拡張したくない場合は今すぐ

その終わり、私はすでにhereと答えています。

これは、日付の最もクリーンな解決策です(私は思う)!時間に基づいて

$query = $repository->createQueryBuilder('u')->where('u.createdAt LIKE :date') 
     ->setParameter('date', '2013-05-06%') 
     ->getQuery(); 

     $users = $query->getResult(); 

を検索:

Iドン

今すぐ別の簡単な解決策はあなたにもそれを行うことができますので、 LIKE演算子で文字列として日時フィールドを比較することです文字列として比較する以外のDQLを持つ別の解決策を知っていません(DATEを使ってdoctrineを拡張しない限り)。ここでコードは

$query = $um->getRepository()->createQueryBuilder('u')->where('u.createdAt LIKE :date') 
     ->setParameter('date', '____-__-__ 10:45:__') 
     ->getQuery(); 

"_"(アンダースコア)は1文字(任意の文字!)を意味します。

あなたのソリューションを選択してください;)私の作品私のコードの

+0

に特異的に結合する「は、あなたの答えのために非常にあなたをありがとう天才、それは完全に動作します!最後に、DATE()およびTIME()関数を拡張して登録します。私もあなたの他のソリューションを試してみました、そして、すべてはOKです! – JohnDoe66

3

パート:

$qb->andWhere('s.createdAt LIKE :createdAt'); 
$qb->setParameter('createdAt', $startDate->format("Y-m-d") . "%"); 
関連する問題