Oto najprostsza rzecz, jaką znalazłem
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))
DATEDIFF zwraca całkowitą liczbę dni przed lub od 1900-1-1, a funkcja Convert Datetime obligatoryjnie przywraca tę datę o północy.
Ponieważ DateDiff zwraca liczbę całkowitą, możesz użyć dodawania lub odejmowania dni, aby uzyskać właściwe przesunięcie.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()) + @dayOffset)
To nie jest zaokrąglanie, to ucinanie ... Ale myślę, że o to się prosi. (Aby zaokrąglić, dodać jeden i obciąć ... i to też nie jest zaokrąglanie, to sufit, ale najprawdopodobniej to, co chcesz. Aby naprawdę zaokrąglić, dodaj 0,5 (czy to działa?) I obetnij.
Okazuje się, że możesz dodać .5 do GetDate () i działa zgodnie z oczekiwaniami.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE() + .5))
Wykonałem wszystkie testy na SQL Server 2008, ale myślę, że te funkcje mają zastosowanie również w 2005 roku.