2011-12-22 5 views
2

J'essaie de créer une requête avec une clause where qui filtre entre les dates. Ma requête ressemble à quelque chose commeClause where OrmLite et SQL entre avec java.util.date

java.util.Date date1 = ... 
java.util.Date date2 = ... 
where().between("datefield", date1, date2) 

Mais cela ne fonctionne pas. Je construis ma requête avec le QueryBuilder et j'utilise selectRaw(...) et queryRaw(...). Quelqu'un peut-il aider?

Répondre

12

Oui, cela ne va pas fonctionner parce que sous Android, les champs Date sont conservés en tant que chaînes qui ne se comparent pas correctement lors de l'utilisation de SQL between. Une façon de résoudre ce problème serait de stocker vos Date champs à la place désire ardemment:

@DatabaseField(dataType = DataType.DATE_LONG) 
private Date dateField; 

Ce stockera les Date que les millisecondes d'époque à long nombre qui est comparable et qui travaillera avec between.

+0

Même chose pour moi lors de l'interface avec MySQL, j'ai déjà mis dataType = DataType.DATE ... pouvez-vous m'aider Gray? –

+0

Pouvez-vous poser une question sur la liste de diffusion de @bromoProgrammer? https://groups.google.com/forum/?fromgroups#!forum/ormlite-user – Gray

+0

@Gray - Juste une petite question: Pouvez-vous penser à une raison quelconque pour stocker des dates dans un autre format que celui d'OrmLite? – jwBurnside