Unix タイムスタンプ (「エポック」からの秒数) を使用することに投票します。これは、範囲計算に便利で、最も堅牢な日時ライブラリで理解できるためです。
SQLite には、 Unix タイムスタンプを操作するためのヘルパー関数がいくつか用意されています。ここで最も役立つのはstrftime
.
strftime('%s', 'now')
INSERT で使用して、現在の Unix タイムスタンプを挿入できます。
後で、関心のある特定の時間範囲がわかっている場合は、その範囲の最小タイムスタンプと最大タイムスタンプを計算し、それらの間の行を選択できます。
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
、これらのクエリのほとんどを非常に迅速に解決できる可能性があります。