Hlasoval bych pro používání unixových časových razítek (počet sekund od „epochy“), protože jsou vhodné pro výpočet rozsahu a rozumí jim většina robustních data-časových knihoven.
SQLite poskytuje několik pomocných funkcí pro práci s unixovými časovými razítky. Nejužitečnější zde bude strftime
.
Aktuální časové razítko Unixu můžete vložit pomocí strftime('%s', 'now')
ve vašem INSERT.
Později, pokud znáte konkrétní časový rozsah, který vás zajímá, můžete vypočítat minimální a maximální časové razítko pro tento rozsah a vybrat mezi nimi řádky:
SELECT * FROM data
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00')
AND timestamp < strftime('%s', '2012-12-25 01:00:00');
Nebo předpokládejme, že chcete počítat požadavky za rok podle měsíce:
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);
Díky chytrému použití možností formátu strftime
Většinu těchto dotazů pravděpodobně dokážete vyřešit velmi rychle.