Unixタイムスタンプ(「エポック」からの秒数)を使用することに投票します。これは、範囲の計算に便利であり、最も堅牢な日時ライブラリによって理解されるためです。
SQLiteは、Unixタイムスタンプを操作するためのいくつかのヘルパー関数を提供します。ここで最も役立つのはstrftime
です。 。
strftime('%s', 'now')
を使用して、現在のUnixタイムスタンプを挿入できます。 INSERTで。
後で、関心のある特定の時間範囲がわかっている場合は、その範囲の最小タイムスタンプと最大タイムスタンプを計算し、それらの間の行を選択できます。
SELECT * FROM data
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00')
AND timestamp < strftime('%s', '2012-12-25 01:00:00');
または、1年のリクエストを月ごとにカウントしたい場合:
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);
フォーマットオプションstrftime
を巧みに使用する が提供するので、おそらくこれらのクエリのほとんどをかなり迅速に解決できます。