Hier ist das Einfachste, was ich gefunden habe
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))
Der DATEDIFF gibt die ganzzahlige Anzahl von Tagen vor oder seit 1900-1-1 zurück, und die Convert Datetime bringt sie verbindlich auf dieses Datum um Mitternacht zurück.
Da DateDiff eine Ganzzahl zurückgibt, können Sie Tage addieren oder subtrahieren, um den richtigen Offset zu erhalten.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()) + @dayOffset)
Das rundet nicht ab, das schneidet ab ... Aber ich denke, das wird gefragt. (Um eine zu runden, fügen Sie eine hinzu und schneiden Sie sie ab ... und das rundet auch nicht die Decke ab, sondern höchstwahrscheinlich das, was Sie wollen. Um wirklich zu runden, fügen Sie 0,5 hinzu (funktioniert das?) Und schneiden Sie ab.
Es stellt sich heraus, dass Sie GetDate () .5 hinzufügen können, und es funktioniert wie erwartet.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE() + .5))
Ich habe alle meine Versuche mit SQL Server 2008 durchgeführt, aber ich denke, diese Funktionen gelten auch für 2005.