Ось найпростіша річ, яку я знайшов
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))
DATEDIFF повертає ціле число днів до або після 1900-1-1, а Convert Datetime обов'язково повертає його до цієї дати опівночі.
Оскільки DateDiff повертає ціле число, ви можете використовувати додавання або віднімання днів, щоб отримати правильний зсув.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()) + @dayOffset)
Це не округлення, це усічення ... Але я думаю, що про це просять. (Для округлення додайте одиницю та усікайте ... і це теж не округлення, а стеля, але знову ж, швидше за все, що ви хочете. Дійсно округлення додайте .5 (чи це працює?) Та усікайте.
Виявляється, ви можете додати .5 до GetDate (), і це працює, як очікувалося.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE() + .5))
Я провів усі свої випробування на SQL Server 2008, але, думаю, ці функції стосуються і 2005 року.