Không cần phải có một cột được tính toán để "tìm kiếm một bảng" cho các hàng phù hợp với một năm. Viết cho bạn mệnh đề where bằng cách sử dụng một khoảng thời gian thay thế và có một chỉ mục trên cột ngày của bạn.
select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
ActivityDate < '20120101'
Nếu bạn muốn sử dụng một int (năm) làm đối số cho truy vấn thay vì hai chuỗi, bạn có thể sử dụng dateadd
. Chỉ cần đảm bảo rằng bạn không áp dụng bất kỳ chức năng / thao tác nào cho cột Ngày hoạt động vì SQL Server sẽ không thể sử dụng chỉ mục nếu bạn làm như vậy.
declare @Year int = 2011
select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
ActivityDate < dateadd(year, @Year-1899, 0)