Głosowałbym za używaniem uniksowych znaczników czasu (liczba sekund od „epoki”), biorąc pod uwagę, że są one wygodne do obliczania zakresów i zrozumiałe dla najbardziej niezawodnych bibliotek daty i czasu.
SQLite udostępnia kilka funkcji pomocniczych do pracy z uniksowymi znacznikami czasu. Najbardziej użytecznym tutaj będzie strftime
.
Możesz wstawić bieżący uniksowy znacznik czasu, używając strftime('%s', 'now')
we WKŁADCE.
Później, jeśli znasz konkretny zakres czasu, który Cię interesuje, możesz obliczyć minimalne i maksymalne znaczniki czasu dla tego zakresu i wybrać między nimi wiersze:
SELECT * FROM data
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00')
AND timestamp < strftime('%s', '2012-12-25 01:00:00');
Albo załóżmy, że chcesz policzyć roczne żądania według miesiąca:
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);
Dzięki sprytnemu wykorzystaniu opcji formatu strftime
zapewnia, prawdopodobnie będziesz w stanie dość szybko rozpracować większość tych zapytań.