2017-02-04 7 views
1

私のSQLiteデータベースの列は次のように定義されていますORMLite - 日付条件付きQueryBuilder

@DatabaseField(canBeNull = true) 
    public Date dateFound; 

私はそれがこのように定義された参照sqliteのbroswer開くとき:

'dateFound' TIMESTAMP 

を今、私はQueryBuilderを作成します。

DateTime time=new DateTime(); 
DateTime minusDays = time.minusDays(4); 
QueryBuilder<Record, Long> queryBuilder = DatabaseHelper.get().getRecordDao().queryBuilder(); 
Where<Record, Long> where = queryBuilder.where(); 
where.ne("amount",0); 
where.or(); 
where.ge("dateFound",minusDays.toDate()); 
System.out.println(queryBuilder.prepareStatementString()); 

されて出力される。

正しくない
SELECT * FROM `record` WHERE (`amount` <> 0 OR `dateFound` >= ?) 

、私もnew Timestamp(minusDays.toDate().getTime())にしようとしたクエリを結果と同じだった。..

答えて

0

私はおそらく最良の方法が、その作業ではありません日付をキャストすることによってそれを解決:

DateTime time=new DateTime(); 
DateTime minusDays = time.minusDays(4); 
QueryBuilder<Record, Long> queryBuilder = DatabaseHelper.get().getRecordDao().queryBuilder(); 
Where<Record, Long> where = queryBuilder.where(); 
where.ne("amount",0); 
where.or(); 
where.raw("cast(`dateFound` as INTEGER)>= "+minusDays.toDate().getTime());