Sqlserver
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> Sqlserver

Hàm YEAR (ngày) hiệu quả như thế nào?

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)      


  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Không thể thả đối tượng vì nó được tham chiếu bởi ràng buộc NGOẠI KHÓA - Hướng dẫn SQL Server / TSQL Phần 74

  2. Làm cách nào để kết nối với cơ sở dữ liệu MSSQL bằng mô-đun DBI của Perl trong Windows?

  3. Nhóm và tổng hợp dữ liệu hàng thành cột trong MS-SQL?

  4. Xóa cấu hình thư cơ sở dữ liệu (SSMS)

  5. Cách thay đổi màu và phông chữ trong SQL Server Management Studio (SSMS) - Hướng dẫn SQL Server / TSQL Phần 12