2017-02-04 3 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()); 
Смежные вопросы