我想将 sqlite 查询转换为 Ormlite 查询。
SELECT * FROM Test where strftime('%m-%Y',Date)='11-2001'
我无法像上面的查询那样格式化日期列。
如何将 Ormlite 中的日期列格式设置为 MM-yyyy
?
谢谢。
最佳答案
如果这正是您想要使用的 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 格式之一[完全]不匹配:
- 年-月-日
- 年-月-日 时:分
- 年-月-日 时:分:秒
- YYYY-MM-DD HH:MM:SS.SSS
- YYYY-MM-DDTHH:MM
- YYYY-MM-DDTHH:MM:SS
- YYYY-MM-DDTHH:MM:SS.SSS
- 时:分
- 时:分:秒
- 时:分:SS.SSS
- 现在
- DDDDDDDDDD
当您将其更改为 DataType.DATE_STRING
时,它将存储为以下似乎有效的内容:
2012-07-19 10:03:49.000991
有关详细信息,请参阅有关日期函数的 Sqlite 文档。不幸的是,文档没有完全解释数据库值需要采用某种格式:
关于sqlite - ORMLite查询日期格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096128/