Просто уточнить тип столбца, за одним исключением, в значительной степени не имеет значения, поскольку любой тип данных может храниться в любом типе столбца.
- Исключением является столбец rowid или псевдоним столбца rowid , такой столбец ДОЛЖЕН хранить целое число.По целому числу это 64-битное целое число со знаком и, следовательно, включает в себя java long .
Сам тип столбца также является гибким, например, CREATE TABLE mytable (mycolumn a_pretty_weird_column_type)
допустим (как и LONG),Такие типы преобразуются в соответствии с 5 правилами в сходство столбцов.
Соединение вышеперечисленного с использованием: -
CREATE TABLE IF NOT EXISTS mytable (mycolumn a_pretty_weird_column_type);
DELETE FROM mytable;
INSERT INTO mytable VALUES
(1549251913000),
(999999999999999),('Fred'),(x'010203040506070809'),(0.234567),(null),
('999999999999999'), -- Note although specified as TEXT as mycolumn is effectively NUMERIC stored as INTEGER
('0.234567') -- As above but stored as REAL
;
SELECT
*,
typeof(mycolumn) AS coltype, -- The column type (note as per value not column definition)
hex(mycolumn) AS as_hex, -- Convert column to a hex representation of the data
CAST(mycolumn AS TEXT) AS as_text, -- follow rules
CAST(mycolumn AS INTEGER) AS as_integer,
CAST(mycolumn AS REAL) AS as_real,
CAST(mycolumn AS NUMERIC) AS as_numeric,
CAST(mycolumn AS BLOB) AS as_blob
FROM mytable;
приводит к: -
![enter image description here](https://i.stack.imgur.com/QbEu3.png)
Библия как таковая Типы данных в SQLite версии 3 .
, но когда я беру значение, оно не совпадает с тем, чтоЯ ожидал.это становится таким -1231280856
Проблема
Таким образом, ваша проблема не имеет ничего общего с типом столбца, не с SQLite как таковым, скорее это связано с использованием курсора getInt метод, вместо getLong метод.
В одном ответе говорится:
Всегда лучше сохранять дату и время вформа текста в sqlite.
Это неверно с точки зрения пространства и, следовательно, в основе эффективности лежит использование числового представления, то есть 64-разрядного целого числа со знаком в соответствии с SQL как понятноSQLite - функции даты и времени - строки времени (максимум 8 байт) даты и времени будут более эффективными, чем хранение 19 байт (с точностью до секунды).