2017-10-04 13 views
1

私はJava JPA - Spring Bootを初めて使用しています。私は2つの日付の間の行の数を数えるJPAルックアップを作成したいと思います。Spring Data JPA - 日付の前後にクエリを作成する

私は過去28日間に加わったメンバーの数を示す番号を取得する必要があります。その+ 4% - - または-2% - だから、10

のようにしかし、また、先月からの差を示す値を取得ので、私はそれがCOUNT1/COUNT2 * 100になります=差があるとします。あなたはどのように極性を検出しますか?それで、その陰性か陽性かを評価してください。

現在、私はこの

long countByRegisteredDateAfter(Date thresholdDate) throws Exception; 

のようなものを持っているが、おそらくもっとこの

long countByRegisteredBeforeDateAfter(Date thresholdDate1, Date thresholdDate2) 
    throws Exception; 

、多分もっと細かいが、これまでコード

long countByRegisteredBeforeAndDateAfterAndRole(Date thresholdDate1, Date thresholdDate2, String role) 
    throws Exception; 

このようにチューニングされた何かのようなものが必要になります。

  // 28 days ago 
      Calendar thresholdPast28 = Calendar.getInstance(); 
      thresholdPast28.set(Calendar.HOUR_OF_DAY,0); 
      thresholdPast28.set(Calendar.MINUTE,0); 
      thresholdPast28.set(Calendar.SECOND,0); 
      thresholdPast28.add(Calendar.DATE,-28); 

      java.util.Date thresholdPast28Date = thresholdPast28.getTime(); 
      Long countLast28Days = (Long) tblLoginRepository.countByRegisteredDateAfter(thresholdPast28Date); 

      System.out.println("countLast28Days " + countLast28Days); 


      // 56 days ago 
      Calendar thresholdPast56 = Calendar.getInstance(); 
      thresholdPast56.set(Calendar.HOUR_OF_DAY,0); 
      thresholdPast56.set(Calendar.MINUTE,0); 
      thresholdPast56.set(Calendar.SECOND,0); 
      thresholdPast56.add(Calendar.DATE,-28); 

      java.util.Date thresholdPast56Date = thresholdPast56.getTime(); 
      Long countLast56Days = (Long) tblLoginRepository.countByRegisteredDateAfter(thresholdPast56Date); 

      System.out.println("countLast56Days " + countLast56Days); 

答えて

4

私は、あなたが前後に日付を見つけようとしていると述べているので、ちょっと混乱します。それでも試してみるの間の日付を取得します

long countByRegisteredDateBetween(Date thresholdDate1, Date thresholdDate2) 

または第二の例では

long countByRegisteredDateBetweenAndRole(Date thresholdDate1, Date thresholdDate2, String role) 

をし、前と後のような何か試す取得する:ロールケース

で行う同様の

long countByRegisteredDateBeforeAndRegisteredDateAfter(Date thresholdDate1, Date thresholdDate2) 

+0

ありがとうございます@pezetem - ちょうどこの解決策にも来ました。 –