Тип данных (сходство типов столбцов) из-за гибкости SQLite не очень важен см. .
Скорее всего, что важно / полезно / удобно, это формат даты.
Что касается SQLite, то 2015-11-09 является лучшим форматом из двух, поскольку функции Дата и время могут использоваться непосредственно, скажем, для выбора диапазона или для извлечения данных в другой формат с использованием функции strftime .
Например, рассмотрим следующий SQL
DROP TABLE IF EXISTS mytable ;
CREATE TABLE IF NOT EXISTS mytable (col1 TEXT, col2 BLOB, col3 REAL, col4 INTEGER, col5 a_weird_type);
INSERT INTO mytable VALUES
('2015-11-09','2015-11-09','2015-11-09','2015-11-09','2015-11-09'),
('NOV 9 2015','NOV 9 2015','NOV 9 2015','NOV 9 2015','NOV 9 2015'),
('NOV 09 2015','NOV 09 2015','NOV 09 2015','NOV 09 2015','NOV 09 2015'),
('NOV 19 2015','NOV 19 2015','NOV 19 2015','NOV 19 2015','NOV 19 2015')
;
SELECT * FROM mytable;
SELECT * FROM mytable WHERE date(col1) BETWEEN date('2014-01-01') AND date('2016-12-31');
SELECT *,
CASE
WHEN substr(col1,4,1) = ' ' AND substr(col1,6,1) = ' ' AND substr(col1,1,3) = 'NOV' THEN
substr(col1,7,4)||'-11-0'||substr(col1,5,1)
WHEN substr(col1,4,1) = ' ' AND substr(col1,7,1) = ' ' AND substr(col1,1,3) = 'NOV' THEN
substr(col1,8,4)||'-11-'||substr(col1,5,2)
ELSE col1
END AS colx
FROM mytable
WHERE date(colx) BETWEEN date('2014-01-01') AND date('2016-12-31')
;
Как видно из первого запроса SELECT и вставленных данных, может использоваться любой тип столбца. Результат запроса: -
Однако, затем рассмотрите 2-й запрос SELECT, он вернет только одну строку, где дата была сохранена как YYYY-MM-DD, так как NOV не будет равняться между 2014 и 2016 то есть результат: -
Скорее, чтобы выбрать все строки (все должны быть в этом диапазоне дат), вам нужно будет использовать что-то вроде третьего запроса SELECT. Это чересчур сложно (учитывая, что JUST справляется с NOV, поэтому еще 22 предложения WHEN должны быть закодированы для всех месяцев). Это приводит к: -