2012-06-19 27 views
6

Tôi đã tìm thấy một vài ví dụ trực tuyến nhưng tôi không hoàn toàn hiểu cách hoạt động của nó. ví dụ:Tìm thuật toán ngày chủ nhật trước đây

 SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 

Tôi thậm chí không chắc nó làm những gì tôi muốn.

Điều tôi cần là khi truy vấn được thực hiện, nó có thể SELECT * from xTable WHERE xDate là giữa hai ngày. Chủ nhật cuối cùng và chủ nhật tiếp theo (tuần hiện tại). Tôi có thể sử dụng những gì để tìm kiếm tự động? Và hãy giải thích vì tôi mới sử dụng SQL.

+4

Tôi không hiểu tại sao một người nào đó có thể bỏ phiếu cho việc đóng vì _ "không phải là câu hỏi thực" _. Rõ ràng những gì OP muốn biết: làm thế nào để có được hồ sơ của tuần hiện tại. Nhưng câu hỏi là, bạn đã thử truy vấn và nó trả lại kết quả sai? –

+0

Nó thực sự trả về một ngày tôi không thể tìm thấy cách sử dụng truy vấn này để có được kết quả của tôi. – phadaphunk

Trả lời

4

Tôi nhìn sâu sắc hơn trong cố gắng tìm hiểu truy vấn này

SELECT DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 

Và sử dụng nó để truy xuất các thứ hai trước. Bây giờ tôi có thể chỉ cần DATEADD 6 ngày nữa để có được một tuần đầy đủ.

Các giải pháp tôi sử dụng:

 Set @Monday = DATEADD(ww, DATEDIFF(ww,0,GETDATE()), 0) 
     Set @Sunday = DATEADD(dd, 06, @Monday) 

Vấn đề giải quyết.

+0

Nếu bạn không có ngày trong tương lai trong bảng, đây là cách hiệu quả nhất: 'SELECT * từ xTable WHERE xDate> = DATEADD (ww, DATEDIFF (ww, 0, GETDATE()), 0)'. Nếu bạn cũng muốn hạn chế các ngày trong tương lai (nhiều hơn một tuần): 'SELECT * từ xTable WHERE xDate> = DATEADD (ww, DATEDIFF (ww, 0, GETDATE()), 0) AND xDate

+0

Nó cho một báo cáo thực sự quên đề cập đến. Vì vậy, nếu ai đó muốn in lại một báo cáo từ hai tháng trước, sẽ có một số ngày trong tương lai. Nhưng tôi đã thử nó và nó hoạt động hoàn hảo nếu nó không phải cho vấn đề ngày trong tương lai. Cảm ơn:) – phadaphunk

Các vấn đề liên quan