ORMLite查询日期格式问题

时间:2012-06-19 07:16:56

标签: sqlite date-format ormlite

我想将sqlite查询转换为Ormlite查询。

SELECT * FROM Test where strftime('%m-%Y',Date)='11-2001'

我无法像上面的查询一样格式化日期列。

如何将Ormlite中的Date列格式化为MM-yyyy? 感谢。

1 个答案:

答案 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格式之一:

  1. YYYY-MM-DD
  2. YYYY-MM-DD HH:MM
  3. YYYY-MM-DD HH:MM:SS
  4. YYYY-MM-DD HH:MM:SS.SSS
  5. YYYY-MM-DDTHH:MM
  6. YYYY-MM-DDTHH:MM:SS
  7. YYYY-MM-DDTHH:MM:SS.SSS
  8. HH:MM
  9. HH:MM:SS
  10. HH:MM:SS.SSS
  11. 现在
  12. DDDDDDDDDD
  13. 当您将其更改为DataType.DATE_STRING时,它将被存储为以下内容似乎有效:

    2012-07-19 10:03:49.000991
    

    有关详细信息,请参阅日期函数上的Sqlite文档。不幸的是,文档完全解释了数据库值需要采用某种格式:

      

    http://www.sqlite.org/lang_datefunc.html