Nghiêm túc, phương pháp a
là ít tài nguyên nhất:
a) select DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
Đã chứng minh ít CPU hơn với tổng thời lượng một triệu hàng bởi một số người có quá nhiều thời gian trong tay: Cách hiệu quả nhất trong SQL Server để lấy ngày từ ngày + giờ?
Tôi thấy một thử nghiệm tương tự ở nơi khác với kết quả tương tự quá.
Tôi thích DATEADD / DATEDIFF vì:
Chỉnh sửa, tháng 10 năm 2011
Đối với SQL Server 2008+, bạn có thể CAST date
tức là CAST(getdate() AS date)
. Hoặc chỉ sử dụng date
datatype để không có thời gian để loại bỏ.
Chỉnh sửa, tháng 1 năm 2012
Một ví dụ hoạt động về mức độ linh hoạt của nó: Cần tính toán theo thời gian làm tròn hoặc số ngày trong máy chủ sql
Chỉnh sửa, tháng 5 năm 2012
Không sử dụng điều này trong các mệnh đề WHERE và tương tự mà không cần suy nghĩ: thêm chức năng hoặc CAST vào cột làm mất hiệu lực sử dụng chỉ mục. Xem số 2 tại đây: http://www.simple-talk.com/sql/t-sql-programming/ten-common-sql-programming-mistakes/
Bây giờ, điều này đã có một ví dụ về các phiên bản tối ưu hóa SQL Server sau này quản lý CAST chính xác, nhưng nói chung nó sẽ là một ý tưởng tồi ...
Chỉnh sửa, tháng 9 năm 2018, cho datetime2
DECLARE @datetime2value datetime2 = '02180912 11:45' --this is deliberately within datetime2, year 0218
DECLARE @datetime2epoch datetime2 = '19000101'
select DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch)