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)
为什么这可能?
根据文档:SQLite-数据类型
SQLite 没有为存储日期和/或时间而预留的存储类.相反,SQLite的内置日期和时间函数能够将日期和时间存储为TEXT,REAL或INTEGER值:
- TEXT为ISO8601字符串
- 真实如朱利安日数,根据公历4714年11月24日格林威治中午以来的天数.
- INTEGER as Unix Time,自1970-01-01 00:00:00 UTC以来的秒数.
因此,SQLite依赖于转换值的方法.它没有自己的数据类型来限制日期/时间类型.