1

SQLiteを利用したiOSアプリがあります。データベースの管理にはFireFoxとプラグインSQLiteManagerを使用しています。

今、私はこのようなテーブルを持っています:

CREATE TABLE "someTable" ("id" INTEGER NOT NULL , "timeOfEvent" DATETIME NOT NULL)

ただし、次のように、実質的に任意の値をDateTime列に入力できます。

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

なぜこれが可能ですか?

4

2 に答える 2

6

ドキュメントに従って:SQLite-データ型

SQLiteには、日付や時刻を格納するためのストレージ クラスが用意されていません。代わりに、SQLite の組み込みの日付と時刻関数は、日付と時刻を TEXT、REAL、または INTEGER 値として格納できます。

  • ISO8601 文字列としての TEXT
  • ユリウス日としての REAL。先発グレゴリオ暦による紀元前 4714 年 11 月 24 日のグリニッジ正午からの日数。
  • UNIX 時間としての INTEGER、1970-01-01 00:00:00 UTC からの秒数。

したがって、SQLite はメソッドに依存して値を変換します。日付/時刻型を制限する独自のデータ型はありません。

于 2012-11-08T04:15:14.793 に答える
3

SQLite は動的です。SQLite クエリ言語から- CREATE TABLE

ほとんどの SQL データベースとは異なり、SQLite は、列に宣言された型に基づいて列に挿入できるデータの型を制限しません。代わりに、SQLite は動的型付けを使用します。列の宣言された型は、列のアフィニティのみを決定するために使用されます。

于 2012-11-08T04:14:53.983 に答える