Jeg ville stemme for at bruge Unix-tidsstempler (antal sekunder siden "epoken"), da de er praktiske til rækkeviddeberegning og forstås af de fleste robuste dato-tidsbiblioteker.
SQLite giver nogle få hjælpefunktioner til at arbejde med Unix-tidsstempler. Den mest nyttige her vil være strftime
.
Du kan indsætte det aktuelle Unix-tidsstempel ved at bruge strftime('%s', 'now')
i din INSERT.
Hvis du senere kender et bestemt tidsinterval, du er interesseret i, kan du beregne minimums- og maksimumtidsstempler for dette interval og vælge rækker mellem 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 hvis du vil tælle et års anmodninger efter måned:
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);
Gennem smart brug af formatindstillingerne strftime
giver dig, kan du sikkert løse de fleste af disse forespørgsler ret hurtigt.