2008-09-23 46 views

Trả lời

23
Select DateAdd(Month, DateDiff(Month, 0, GetDate()), 0) 

Để chạy trên cột này, thay thế GetDate() bằng tên cột của bạn.

Bí quyết đối với mã này là với DateDiff. DateDiff trả về một số nguyên. Tham số thứ hai (số 0) đại diện cho ngày 0 trong SQL Server, là ngày 1 tháng 1 năm 1900. Vì vậy, dateiff tính số nguyên của tháng kể từ ngày 1 tháng 1 năm 1900, sau đó thêm số tháng đó vào ngày 1 tháng 1 năm 1900. Hiệu ứng ròng sẽ loại bỏ phần ngày (và thời gian) của một giá trị ngày giờ.

+1

Mã này được làm bằng tuyệt vời. Nó cũng hoạt động cho các đơn vị thời gian khác. –

7
SELECT DATEADD(mm, DATEDIFF(mm, 0, @date), 0) 
2

Something như thế này sẽ làm việc ....

UPDATE YOUR_TABLE 
SET NewColumn = DATEADD(day, (DATEPART(day, OldColumn) -1)*-1, OldColumn) 
+0

Biểu thức có thể đơn giản hơn một chút: 'DATEADD (ngày, 1 - DAY (OldColumn), OldColumn)'. Tuy nhiên, phương thức DATEADD & DATEDIFF là tốt hơn vì nó cũng đặt lại phần thời gian. –

0

Chỉ cần sử dụng

DATEADD(DAY, 1-DAY(@date), @date) 
Các vấn đề liên quan