Eu votaria pelo uso de timestamps Unix (número de segundos desde a "época"), já que eles são convenientes para cálculo de intervalo e compreendidos pelas bibliotecas de data e hora mais robustas.
SQLite fornece algumas funções auxiliares para trabalhar com timestamps Unix. O mais útil aqui será
strftime
. Você pode inserir o timestamp atual do Unix usando
strftime('%s', 'now')
em seu INSERT. Mais tarde, se você conhece um determinado intervalo de tempo em que está interessado, pode calcular os carimbos de data/hora mínimo e máximo para esse intervalo e selecionar linhas entre eles:
SELECT * FROM data
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00')
AND timestamp < strftime('%s', '2012-12-25 01:00:00');
Ou, supondo que você queira contar as solicitações de um ano por mês:
SELECT strftime('%m', timestamp), count(*) FROM Data
WHERE timestamp >= strftime('%s', '2012-01-01 00:00:00')
AND timestamp < strftime('%s', '2013-01-01 00:00:00')
GROUP BY strftime('%m', timestamp);
Através do uso inteligente das opções de formato
strftime
fornece, você provavelmente pode resolver a maioria dessas consultas rapidamente.