Und die folgende Zeile würde ich genau andersrum machen:
where cast(Datum as Date) = :EingabeDatum
Also nicht (für Mio. Datensätze) das Feld "Datum" in einen anderen Datentyp casten, sondern den Parameter :EingabeDatum einmal in den Datentyp vom Feld "Datum" casten.
Das muss nicht unbedingt funktionieren, z.B. wenn das Feld einen Time-Anteil hat, der beim CAST(Datum as DATE) auf 0 gesetzt wird.