Sqlite日期时间类型问题

roa*_*oul 1 java sqlite

我尝试从Java插入一个日期时间到sqlite数据库,但事情很奇怪.

当我使用代码Calendar.getInstance().getTime()插入时,表中的值是(例如)1359960520718.当我使用字符串2010-01-01插入表时,值是正常的:2010-01-01.

但是当我使用字符串2010-21-51插入表中时,表中的值是2010-21-51.这是一个无效的日期.它出什么问题了?

mvp*_*mvp 8

这是因为SQLite是动态类型的.您可以将任何类型的值写入任何列,并且它不会抱怨 - 它可以以不同的类型静默存储它.

根据文档,datetime可以存储为

  • TEXT为ISO8601字符串("YYYY-MM-DD HH:MM:SS.SSS").
  • 真实如朱利安日数,根据公历4714年11月24日格林威治中午以来的天数.
  • INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数.

在您的情况下,SQLite无法将无效日期转换为INTEGER格式,并被迫将其存储为标准字符串.这个日期无效,但SQLite并不关心.