Saya akan memilih untuk menggunakan stempel waktu Unix (jumlah detik sejak "Epoch"), mengingat mereka nyaman untuk penghitungan rentang dan dipahami oleh sebagian besar perpustakaan tanggal-waktu yang kuat.
SQLite menyediakan beberapa fungsi pembantu untuk bekerja dengan cap waktu Unix. Yang paling berguna di sini adalah strftime
.
Anda dapat memasukkan stempel waktu Unix saat ini dengan menggunakan strftime('%s', 'now')
di INSERT Anda.
Nanti, jika Anda mengetahui rentang waktu tertentu yang Anda minati, Anda dapat menghitung stempel waktu minimum dan maksimum untuk rentang tersebut dan memilih baris di antaranya:
SELECT * FROM data
WHERE timestamp >= strftime('%s', '2012-12-25 00:00:00')
AND timestamp < strftime('%s', '2012-12-25 01:00:00');
Atau, misalkan Anda ingin menghitung permintaan setahun berdasarkan bulan:
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);
Melalui penggunaan opsi format yang cerdas strftime
menyediakan, Anda mungkin dapat mengerjakan sebagian besar kueri tersebut dengan cukup cepat.