sqlite - ORMLite查询日期格式问题

标签 sqlite date-format ormlite

我想将 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 格式之一[完全]不匹配:

  1. 年-月-日
  2. 年-月-日 时:分
  3. 年-月-日 时:分:秒
  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. 时:分
  9. 时:分:秒
  10. 时:分:SS.SSS
  11. 现在
  12. DDDDDDDDDD

当您将其更改为 DataType.DATE_STRING 时,它将存储为以下似乎有效的内容:

2012-07-19 10:03:49.000991

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

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

关于sqlite - ORMLite查询日期格式问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11096128/

相关文章:

sql - 哪些语句属于 SQLite 3 中的事务?

java - HTTP 日期的 SimpleDateFormat

java - ORMLite 数据库模型通过改造适配器转为 GSON 错误; java.lang.IllegalStateException

sql - 如果值不存在,则SQLite插入值

c# - 如何在 ListView 中选择一条记录并在代码隐藏方法中引用它?

sql - ORA-01839 "date not valid for month specified"对于 where 子句中的 to_date

android - ORMLite 不处理 SQLiteExceptions?

android - 当我使用 extends OrmLiteBaseActivity<Database> 时在 android 上找不到类异常

python - 设置 SQLite 数据库进行聚类分析

java - 使用日期样本作为输入进行日期格式预测