Я пытаюсь вставить значение datetime в базу данных SQLite. Это кажется sucsessful, но когда я пытаюсь получить значение, возникает ошибка:
< Невозможно прочитать данные >
Операторы SQL:
create table myTable (name varchar(25), myDate DATETIME)
insert into myTable (name,mydate) Values ('fred','jan 1 2009 13:22:15')
Формат, в котором вы нуждаетесь:
'2007-01-01 10:00:00'
то есть. yyyy-MM-dd HH: mm: ss
Если возможно, используйте параметризованный запрос, так как это освобождает вас от беспокойства по поводу деталей форматирования.
Способ хранения дат в SQLite:
yyyy-mm-dd hh:mm:ss.xxxxxx
SQLite также имеет некоторые функции даты и времени, которые вы можете использовать. См. SQL как понятны SQLite, функции даты и времени.
.xxxxxx
здесь в синтаксисе @ TorValamo = .SSS
=% f в документации по SQLite, то есть в долях секунды.
Вы должны изменить формат строки даты, которую вы поставляете, чтобы иметь возможность вставить ее с помощью функции STRFTIME. Причина в том, что нет аббревиатуры месяца:
%d day of month: 00
%f fractional seconds: SS.SSS
%H hour: 00-24
%j day of year: 001-366
%J Julian day number
%m month: 01-12
%M minute: 00-59
%s seconds since 1970-01-01
%S seconds: 00-59
%w day of week 0-6 with sunday==0
%W week of year: 00-53
%Y year: 0000-9999
%% %
Альтернативой является форматирование даты/времени в уже принятый формат:
Ссылка: Функции даты и времени SQLite
Используйте CURRENT_TIMESTAMP
, когда вам это нужно, вместо NOW()
(который является MySQL)
Прочитайте Это: 1.2 Date
и тип данных времени
лучший тип данных для хранения даты и времени:
TEXT
лучший формат: yyyy-MM-dd HH:mm:ss
Затем прочитайте эту страницу; это лучше всего объяснить о дате и времени в SQLite
.
Я надеюсь, что это поможет вам
Это может быть не самый популярный или эффективный метод, но я склонен отказаться от сильных типов данных в SQLite, поскольку они все по существу все равно сбрасывается в виде строк.
Я написал тонкую оболочку С# вокруг библиотеки SQLite до (при использовании SQLite с С#, конечно), чтобы обрабатывать вставки и выделения из SQLite, как если бы я имел дело с объектами DateTime.