Dengan tanggal (dan waktu) banyak hal menjadi lebih sederhana jika Anda menggunakan >= start AND < end
.
Misalnya:
SELECT
user_id
FROM
user_logs
WHERE
login_date >= '2014-02-01'
AND login_date < '2014-03-01'
Dalam hal ini Anda masih perlu menghitung tanggal mulai dari bulan yang Anda butuhkan, tetapi itu harus lurus ke depan dalam beberapa cara.
Tanggal akhir juga disederhanakan; hanya menambahkan tepat satu bulan. Jangan main-main dengan tanggal 28, 30, 31, dll.
Struktur ini juga memiliki keuntungan karena dapat mempertahankan penggunaan indeks.
Banyak orang mungkin menyarankan formulir seperti berikut, tetapi mereka tidak gunakan indeks:
WHERE
DATEPART('year', login_date) = 2014
AND DATEPART('month', login_date) = 2
Ini melibatkan penghitungan kondisi untuk setiap baris dalam tabel (pemindaian) dan tidak menggunakan indeks untuk menemukan rentang baris yang akan cocok (pencarian rentang).