我想将sqlite查询转换为Ormlite查询。
SELECT * FROM Test where strftime('%m-%Y',Date)='11-2001'
我无法像上面的查询一样格式化日期列。
如何将Ormlite中的Date列格式化为MM-yyyy
?
感谢。
答案 0 :(得分:4)
如果这是您要使用的确切SQL,则可以使用Where.raw(...)
方法:
QueryBuilder<Test, Integer> qb = testDao.queryBuilder();
qb.where().raw("strftime('%m-%Y',Date) = '11-2001'");
List<Test> results = qb.query();
但是,只有将日期字段存储为DATE_STRING
类型时才会出现这种情况:
@DatabaseField(dataType = DataType.DATE_STRING)
Date date;
问题是,默认情况下,Xerial JDBC驱动程序以以下格式存储日期:
2012-07-19 09:58:18.36
哪个[完全]不匹配以下批准的Sqlite格式之一:
当您将其更改为DataType.DATE_STRING
时,它将被存储为以下内容似乎有效:
2012-07-19 10:03:49.000991
有关详细信息,请参阅日期函数上的Sqlite文档。不幸的是,文档不完全解释了数据库值需要采用某种格式: