2016-09-21 14 views
2

私は、カスタムタイプjava.util.Dateが追加された文字列プロパティが、MainGeneratorクラスにいくつかあります。 querybuilderこれらの文字列をgeまたはleまたはgtまたはltと比較するにはどうすればよいですか。 私は文字列型ではデシベル値を保存し、私はそれが動作しないこのAndroid GreenDao - 2つの日付文字列と比較するにはどうすればよいですか?

qb.queryBuilder().where(TestDao.Properties.Date_entered.ge(start)).list();

のようにそれらを比較します。

+0

startのサンプル値は何ですか? – Zartha

答えて

2

あなたは、あなたのMainGeneratorにあなたが

testdao.addDateProperty("date_entered").notNull(); 

として日を有するなければなりませんgreenDaoを使用している場合はそうqb.queryBuilder().where(TestDao.Properties.Date_entered.ge(start)).list(); 開始java.util.Dateでなければなりません。

1

日付は、long型のタイムスタンプとして保持されます。したがって、クエリパラメータの場合は、long値も使用する必要があります。

+0

例を記入できますか? – user1810931

+0

このクエリqb.queryBuilder()。ここで(TestDao.Properties.Date_entered.ge(start))。list()startはlong値である必要がありますか? – user1810931

+0

DateまたはLong(つまりdate.getTime())のいずれかを使用できます。彼らはどちらも動作します。これは[ドキュメントで説明されています](http://greenrobot.org/greendao/documentation/queries/#Custom_Types_as_Parameters)です。好奇心が強い場合は 'WhereCondition'クラスのソースコードを見てください。 –

0

あなたはミリ秒に文字列の日付を変換することができますし、あなたの結果の値を比較することができます:あなたは、文字列形式でデータベースの日付を保存しているよう

public boolean checkDates(String date1, String date2) { 
      long milliDate1 = getMilliFromDate(date1); 
      long milliDate2 = getMilliFromDate(date2); 

      //Check date according to your requirement and condition 
      return milliDate1 < milliDate2; 
     } 

     public long getMilliFromDate(String dateFormat) { 
      Date date = new Date(); 
     // "dd/MM/yyyy" this is date format i use you can use your own 
     //format which you are storing in local database like time stamp "yyyy-MM-dd HH:mm:ss" 
      SimpleDateFormat formatter = new SimpleDateFormat("dd/MM/yyyy"); 
      try { 
       date = formatter.parse(dateFormat); 
      } catch (ParseException e) { 
       e.printStackTrace(); 
      } 
      return date.getTime(); 
     } 
1

まず文字列にあなたの日付を解析します。次に、データを照会します。サンプルコードです

SimpleDateFormat dateFormat; 
Calendar calendar = Calendar.getInstance(); 
//Modify Calendar here according to your requirement. 

dateFormat=new SimpleDateFormat("yyyy-MM-dd HH:mm:ss", Locale.getDefault()); 
//Check if you have different date format then replace in above line. 

String dateString = dateFormat.format(calendar.getTime()); 

//Then query your data 
qb.queryBuilder().where(TestDao.Properties.Date_entered.ge(dateString)).list(); 
+0

@ user1810931 waqas ali入力した日付がdatePropertyで、この解決策を実行すると、この例外が発生します。不正な日付の値:期待値java.util.DateまたはLongの値.....これは正しい答えだとは思わない – Zartha

+0

私はすでに、この解決策が有効であることを上記で指摘していると思います。フォーマット。あなたは答えの最初の行を読み返す必要があります。 –

関連する問題