SQLite DateTime列接受任何值...正常吗?

Wol*_*lan 1 sql database sqlite ios

我有一个使用SQLite的iOS应用程序.我使用FireFox和插件SQLite Manager来管理数据库.

现在我有一个这样的表:

CREATE TABLE "someTable" ("id" INTEGER NOT NULL , "timeOfEvent" DATETIME NOT NULL)
Run Code Online (Sandbox Code Playgroud)

然而,我几乎可以将任何我想要的值输入到DateTime列中,如下所示:

INSERT INTO sometable (id, timeOfEvent) VALUES (1,'2012-99-99')
INSERT INTO sometable (id, timeOfEvent) VALUES (2,'yyyy-mm-dd')
...etc
Run Code Online (Sandbox Code Playgroud)

为什么这可能?

Yog*_*ngh 6

根据文档:SQLite-数据类型

SQLite 没有为存储日期和/或时间而预留的存储类.相反,SQLite的内置日期和时间函数能够将日期和时间存储为TEXT,REAL或INTEGER值:

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

因此,SQLite依赖于转换值的方法.它没有自己的数据类型来限制日期/时间类型.