S daty (a časy) se mnoho věcí zjednoduší, pokud použijete >= start AND < end
.
Například:
SELECT
user_id
FROM
user_logs
WHERE
login_date >= '2014-02-01'
AND login_date < '2014-03-01'
V tomto případě stále musíte vypočítat počáteční datum měsíce, který potřebujete, ale to by mělo být přímočaré mnoha způsoby.
Koncové datum je také zjednodušeno; stačí přidat přesně jeden měsíc. Žádné zahrávání si s 28., 30., 31. atd.
Tato struktura má také výhodu v tom, že je schopna zachovat používání indexů.
Mnoho lidí může navrhnout formulář, jako je následující, ale nedělá použijte indexy:
WHERE
DATEPART('year', login_date) = 2014
AND DATEPART('month', login_date) = 2
To zahrnuje výpočet podmínek pro každý jednotlivý řádek v tabulce (skenování) a nepoužívání indexu k nalezení rozsahu řádků, které se budou shodovat (prohledávání rozsahu).