2012-06-19 93 views
1

我想將sqlite查詢轉換爲Ormlite查詢。ORMLite查詢日期格式問題

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

我無法格式化日期列像上面的查詢。

如何格式化Ormlite中的日期列爲MM-yyyy? 謝謝。

+0

相關http://stackoverflow.com/questions/2930768/how- to-compare-sqlite-timestamp-values – Gray

回答

4

如果這是您要使用,那麼你可以使用Where.raw(...)方法確切SQL:

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

當你將它更改爲DataType.DATE_STRING那麼它將被存儲爲下面這似乎工作:

2012-07-19 10:03:49.000991 

欲瞭解更多信息,請參見日期函數SQLite的文檔。不幸的是,文件確實不完全解釋說,數據庫中的值需要在一定的格式:

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

+0

Thanks.It工程.. – prs