SQLite поддерживает "DATE" при создании таблицы. (Подробнее об этом позже.)
CREATE TABLE test (dt DATE PRIMARY KEY);
INSERT INTO "test" VALUES('2012-01-01');
INSERT INTO "test" VALUES('2012-01-02');
INSERT INTO "test" VALUES('2012-01-03');
SELECT dt FROM test ORDER BY dt;
2012-01-01
2012-01-02
2012-01-03
Значения в форме гггг-мм-дд сортируются корректно как строка или дата. Это одна из причин, по которой гггг-мм-дд является международным стандартом.
Но SQLite не использует типы данных так, как этого ожидают большинство работников баз данных. Хранение данных основано на классах хранения . Например, SQLite позволяет это.
INSERT INTO test VALUES ('Oh, bugger.');
SELECT * FROM test ORDER BY dt;
2012-01-01
2012-01-02
2012-01-03
Oh, bugger.
Он также допускает различные «форматы» даты (фактически, значения) в одном столбце. Его поведение совершенно не похоже на стандартные движки SQL.
INSERT INTO test VALUES ('01/02/2012');
SELECT * FROM test ORDER BY dt;
01/02/2012
2012-01-01
2012-01-02
2012-01-03
Oh, bugger.
Вам не нужно делать ничего особенного, чтобы сохранить метку времени в столбце даты. (Хотя я бы предпочел, чтобы вы объявили столбец как метку времени.)
INSERT INTO test VALUES ('2012-01-01 11:00:00');
SELECT * FROM test ORDER BY dt;
2012-01-01
2012-01-01 11:00:00
2012-01-02
2012-01-03
Oh, bugger.
SQLite будет пытаться делать все правильно, пока вы вводите в него непротиворечивые данные. И он будет сортировать даты правильно, если вы используете стандартный формат.