我尝试从 Java 将日期时间插入到 sqlite 数据库中,但事情很奇怪。
当我使用代码Calendar.getInstance().getTime()
插入时,表中的值为(例如)1359960520718。当我使用字符串2010-01-01
插入表时,该值是正常的:2010-01-01。
但是当我使用字符串2010-21-51
插入表格时,表格中的值为2010-21-51。那是一个无效的日期。它出什么问题了?
这是因为 SQLite 是动态类型的。您可以将任何类型的值写入任何列,它不会抱怨 - 它可能会默默地将其存储在不同的类型中。
根据文档,日期时间可以存储为
在您的情况下,SQLite 无法将无效日期转换为 INTEGER 格式,而是被迫将其存储为标准字符串。此日期无效,但 SQLite 不在乎。
您可以使用 Calendar.getInstance().getTime() 中的参数新建 Date 类型的日期,例如:
Date date = new Date(Calendar.getInstance().getTime());
然后,也许您应该使用 SimpleDateFormate 将日期格式化为您需要的字符串,例如:
DateFormat df = new SimpleDateFormat("yyyy-MM-dd");
String timeStr = df.format(date);
然后,您将 timeStr 插入表中...如果您在数据库的插入语句中执行某些操作,您还有其他方法