Tôi đang làm việc trên một thủ tục dọn dẹp trên SQL Server 2005 mà phải xóa tất cả các hàng trong một bảng cũ hơn 1 năm trước + thời gian trôi qua trong năm hiện tại.Làm cách nào để có được ngày của năm đầu tiên của năm với SQL?
Ex: Nếu tôi thực hiện các thủ tục hiện nay 2009/06/10 nó phải xóa hàng lớn tuổi hơn 2008/01/01 00:00 (có nghĩa là năm 2007 bao gồm và ngược).
Làm cách nào để có được ngày của năm đầu tiên của năm?
Tôi đã thử điều này:
select cast((DATEPART(year, getdate()) -1)AS DATETIME);
nhưng tôi nhận 1905-07-02 00:00:00.000
và không 2008-01-01 00:00
(như tôi sai dự kiến).
Ai đó có thể giúp tôi không?
Hmm .. Thú vị như thế nào câu trả lời khác cho câu hỏi này (tại thời điểm viết) có 8 upvotes, trong khi tôi chỉ có 1 lên và 1 xuống bỏ phiếu, nhưng tôi là giải pháp duy nhất đưa ra câu trả lời đúng. (Ví dụ: Đối với ngày hôm nay (6 tháng 10 năm 2009), kết quả là 2008-01-01 00:00:00, trong khi giải pháp của Raj trả về 2009-01-01 00:00:00) – CraigTP
Tôi thích SELECT CONVERT (DATETIME, CAST (YEAR (GETDATE()) - 1 AS VARCHAR) + '0101', 112) hoặc SELECT CONVERT (DATETIME, CAST (YEAR (GETDATE()) - 1 AS VARCHAR), 112) nữa, vì nó chỉ định định dạng đầu vào. – LukLed
@CraigTP: Tôi đã tự upvoted bản thân bạn vì bạn đã có câu trả lời đúng. Tôi đã thay đổi của tôi để phản ánh chỉnh sửa –