Frage:
Eine SELECT-Anweisung mit einem Vergleich einer datetime-Spalte zu einem Datum in der WHERE-Bedingung liefert keine bzw. falsche Ergebnisse.
Lösung:
Die datetime-Spalte speichert das Datum immer inklusive Uhrzeit und somit wird auch die Uhrzeit mit in den Vergleich einbezogen. Dies kann zu falschen Ergebnissen führen.
Wenn nur das Datum verglichen werden soll, muss der Wert der datetime-Spalte vor dem Vergleich in einen String konvertiert werden. Dabei darf dieser natürlich nur das Datum beinhalten. Die Online-Hilfe bietet unter den Stichworten convert und cast eine Ãœbersicht der Syntax für die Konvertierung in die unterschiedlichen Datumsformate. So muss für die Konvertierung eines Datums in das Format „dd.mm.yyyy“ die Syntax Convert(datetime,convert(char(10),datumspalte,104)) verwendet werden. Die Zahl 104 kennzeichnet dabei das Format des Datums mit vierstelliger Jahreszahl.