Aquí está la cosa más simple que he encontrado
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))
DATEDIFF devuelve el número entero de días antes o desde 1900-1-1, y Convert Datetime lo devuelve amablemente a esa fecha a la medianoche.
Dado que DateDiff devuelve un número entero, puede usar sumar o restar días para obtener el desplazamiento correcto.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()) + @dayOffset)
Esto no es redondear esto es truncar ... Pero creo que eso es lo que se pregunta. (Para redondear, agregar uno y truncar ... y eso tampoco es redondear, que el techo, pero nuevamente lo más probable es que lo que quieras. Para realmente redondear, agrega .5 (¿funciona?) Y truncar.
Resulta que puede agregar .5 a GetDate () y funciona como se esperaba.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE() + .5))
Hice todas mis pruebas en SQL Server 2008, pero creo que estas funciones también se aplican a 2005.