Potíž je v tom, že typ (small)datetime obsahuje mimo údaje data i čas. Můžeme samozřejmě zařídit, aby naše záznamy měly tento čas 00:00, ale stejně na tento problém narazíme třeba při porovnávání s aktuálním datem u GETDATE(), které je včetně času.
Můžeme tedy buď porovnávat po složkách:
...
WHERE
(YEAR(Datum) = YEAR(GETDATE()))
AND (MONTH(Datum) = MONTH(GETDATE())
AND (DAY(Datum) = DAY(GETDATE())
Nebo použít přetypování na číslo, které udává vzdálenost od určitého nultého dne a to ve dnech:
...
WHERE
FLOOR(CONVERT(float, Datum)) = FLOOR(CONVERT(float, GETDATE())
Na běžných objemech dat se mi nepodařilo na SQL2005 naměřit žádný rozdíl v rychlosti, na obrovských objemech by to stálo za vyzkoušení, teoreticky by mohlo lépe vycházet to druhé.
Každopádně mi při běžném použití přijde přehlednější ta první varianta, ten druhý zápis by osobu neseznámenou mohl pěkně potrápit.