Đây là điều đơn giản nhất tôi đã tìm thấy
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()))
DATEDIFF trả về số nguyên của ngày trước hoặc kể từ năm 1900-1-1 và Ngày giờ chuyển đổi bắt buộc đưa nó trở lại ngày đó lúc nửa đêm.
Vì DateDiff trả về một số nguyên nên bạn có thể sử dụng phép cộng hoặc trừ ngày để có được phần bù phù hợp.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE()) + @dayOffset)
Đây không phải là làm tròn mà là cắt ngắn ... Nhưng tôi nghĩ đó là những gì đang được hỏi. (Để làm tròn, hãy thêm một và cắt ngắn ... và điều đó cũng không làm tròn, đó là trần, nhưng rất có thể là những gì bạn muốn. Để thực sự làm tròn, hãy thêm .5 (điều đó có hoạt động không?) Và cắt ngắn.
Hóa ra bạn có thể thêm .5 vào GetDate () và nó hoạt động như mong đợi.
SELECT Convert(DateTime, DATEDIFF(DAY, 0, GETDATE() + .5))
Tôi đã thực hiện tất cả các thử nghiệm của mình trên SQL Server 2008, nhưng tôi nghĩ rằng các chức năng này cũng áp dụng cho năm 2005.