Một cách tiện lợi là:
DATEADD(dd, 0, DATEDIFF(dd, 0, [YourDate]))
nào nhận được số ngày từ NGÀY 0 đến YourDate và thêm nó vào NGÀY 0 để thiết lập đường cơ sở một lần nữa. Phương pháp này (hoặc "dẫn xuất" ở đây) có thể được sử dụng cho một loạt các thao tác ngày khác.
Edit - tính toán ngày khác:
Ngày đầu tiên của tháng:
DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0)
Ngày đầu tiên của năm:
DATEADD(yy, DATEDIFF(yy, 0, getdate()), 0)
Ngày đầu tiên của khu phố:
DATEADD(qq, DATEDIFF(qq, 0, getdate()), 0)
Last Da y của Tháng Trước:
DATEADD(ms, -3, DATEADD(mm, DATEDIFF(mm, 0, getdate()), 0))
cuối Ngày trong tháng hiện tại:
DATEADD(ms, -3, DATEADD(mm, DATEDIFF(m, 0, getdate()) + 1, 0))
cuối ngày của năm hiện tại:
DATEADD(ms, -3, DATEADD(yy, DATEDIFF(yy, 0, getdate()) + 1, 0))
Đầu tiên thứ hai của Tháng:
DATEADD(wk, DATEDIFF(wk, 0, DATEADD(dd, 6 - DATEPART(day, getdate()), getdate())), 0)
Chỉnh sửa: Đúng, Joe, nó không thêm nó vào NGÀY 0, nó thêm 0 (ngày) vào số ngày mà về cơ bản chỉ chuyển đổi nó trở lại một datetime.
Xem thêm: http://stackoverflow.com/questions/133081/most-efficient-way-in-ms-sql-to-get -date-from-datetime và http://stackoverflow.com/questions/2775/whats-the-best-way-to-remove-the-time-portion-of-a-datetime-value-sql-server – Kristen