Med datoer (og tidspunkter) bliver mange ting nemmere, hvis du bruger >= start AND < end
.
For eksempel:
SELECT
user_id
FROM
user_logs
WHERE
login_date >= '2014-02-01'
AND login_date < '2014-03-01'
I dette tilfælde skal du stadig beregne startdatoen for den måned, du har brug for, men det burde være ligetil på en række måder.
Slutdatoen er også forenklet; bare tilføje præcis en måned. Ingen roder med 28., 30., 31. osv.
Denne struktur har også den fordel, at den er i stand til at opretholde brugen af indekser.
Mange mennesker kan foreslå en formular som den følgende, men de ikke brug indekser:
WHERE
DATEPART('year', login_date) = 2014
AND DATEPART('month', login_date) = 2
Dette involverer at beregne betingelserne for hver enkelt række i tabellen (en scanning) og ikke bruge indeks til at finde rækkevidden af rækker, der vil matche (en interval-seek).