Эта странность SQLite вызвала у меня много страданий.
Простой способ - сохранять и извлекать как обычную метку времени
create table TestDate (
LastModifiedTime datetime
);
insert into TestDate (LastModifiedTime) values (datetime('now'));
select datetime(LastModifiedTime), strftime('%s.%f', LastModifiedTime) from TestDate;
Выход: 2011-05-10 21: 34: 46 | 1305063286.46.000
Болезненный способ - сохранить и получить как метку времени UNIX
Вы можете использовать strftime, чтобы получить значение в тиках. Кроме того, чтобы сохранить метку времени UNIX (примерно эквивалентную тикам), вы можете заключить количество секунд в одинарные кавычки.
insert into TestDate (LastModifiedTime) values ('1305061354');
SQLite будет хранить это внутренне как некоторое другое значение, которое не является меткой времени UNIX. При извлечении вам нужно явно указать SQLite, чтобы он извлекался как отметка времени UNIX.
select datetime(LastModifiedTime, 'unixepoch') FROM TestDate;
Чтобы сохранить текущую дату и время, используйте strftime ('% s', 'now').
insert into TestDate (LastModifiedTime) VALUES (strftime('%s', 'now'));
Полный пример:
create table TestDate (
LastModifiedTime datetime
);
insert into TestDate (LastModifiedTime) values (strftime('%s', 'now'));
select datetime(LastModifiedTime, 'unixepoch') from TestDate;
При выполнении sqlite3 этот скрипт с печатью:
2011-05-10 21:02:34 (or your current time)