使用greenDAO生成器我使用:
entity.addDateProperty("date").notNull();
我插入了值:'2013-10-30',当我检查我的数据库时,我有值。 我使用此查询检查了此值:
select datetime(date) from myTable;
然后它返回: 2013-10-10 00:00:00
现在在android中,当我尝试检索此值时(对于每一行):
myTable.getDate();
始终返回 01/01/1970 。
我发现了什么(但可能不是导致此问题的原因):
我在我的代码中做了一些调试,我发现由greenDAO生成的类myTableDao.java,方法 public void readEntity(Cursor cursor,History_Job entity,int offset)从光标返回值“2013”:
entity.setDate(new java.util.Date(cursor.getLong(offset + 1)));
仍然在myTableDao.java中,方法 createTable()我将此字段声明为Integer。
... “'DATE'INTEGER NOT NULL,”+ // 1:date ...
我是否对DATE属性做了错误,或者在尝试使用此类字段时是否为greenDAO上的错误?
答案 0 :(得分:2)
GreenDao在实体中使用Java Date对象,并将其Date.getTime()(time-in-millis-since-epoch)值存储为SQLite INTEGER。如果正确使用它,这两种方式都可以正常工作。我不确定你为什么要手动插入日期 - 这会破坏使用ORM库的目的。
答案 1 :(得分:0)
GreenDao始终以该特定格式返回日期。你可以称之为bug。
您可以在此处查看代码
<强> https://github.com/greenrobot/greenDAO 强>
你能做的是
请参阅 S QLite Date Datatypes here.
的文档SQLite以三种格式 TEXT,REAL和INTEGER 存储日期,所以关于GreenDao方法的所有内容都将返回给您。你可以修改它。