Um aus einem Datum mit Uhrzeit, wie es beispielsweise GETDATE() zurückliefert, ein Datumswert ohne Uhrzeit zu machen, sind bis zur Version 2005 des SQL-Servers einige Verrenkungen notwendig.
Ich möchte hier ein paar Lösungsansätze aufzeigen. Diese sind nach meiner Präferenz sortiert:
-
SELECT DATEADD(dd, 0, DATEDIFF(dd, 0, GETDATE()))
-
SELECT CAST(FLOOR(CAST(GETDATE() AS FLOAT)) AS DATETIME)
-
SELECT CONVERT(DATETIME, CONVERT(CHAR(8), GETDATE(), 112), 112)
Es gibt sicher noch einige weitere. Nachteil der meisten Methoden ist entweder eine unsichere Konvertierung um Zeichenfolgen (hier ist die Sprache des SQL-Servers zu berücksichtigen) oder eine lange Ausführungszeit aufgrund eines komplizierten Ausführungsplanes.
Im SQL-Server 2008 wurde der Datentyp DATE eingeführt, der diese umständlichen Berechnungen unnötig macht. Das Statement lautet dann:
SELECT CONVERT(DATE, GETDATE())