Jag skulle rösta för att använda Unix-tidsstämplar (antal sekunder sedan "epoken"), med tanke på att de är praktiska för intervallberäkning och förstås av de flesta robusta datum- och tidbibliotek.
SQLite tillhandahåller några hjälpfunktioner för att arbeta med Unix-tidsstämplar. Den mest användbara här kommer att vara strftime
.
Du kan infoga den aktuella Unix-tidsstämpeln genom att använda strftime('%s', 'now')
i din INSERT.
Senare, om du känner till ett visst tidsintervall som du är intresserad av, kan du beräkna minsta och maximala tidsstämplar för det intervallet och välja rader mellan dem:
SELECT * FROM data
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00')
AND timestamp < strftime('%s', '2012-12-25 01:00:00');
Eller om du vill räkna ett års förfrågningar per månad:
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);
Genom smart användning av formatalternativen strftime
ger, kan du förmodligen lösa de flesta av dessa frågor ganska snabbt.