Sqlserver
 sql >> база данни >  >> RDS >> Sqlserver

Колко ефективна е функцията YEAR(дата)?

Не е необходимо да имате изчислена колона за „търсене в таблица“ за редове, които съответстват на една година. Напишете клаузата where, като използвате интервал вместо това и имайте индекс в колоната с дата.

select SomeColumn
from YourTable
where ActivityDate >= '20110101' and
      ActivityDate < '20120101'

Ако искате да използвате int (година) като аргумент на заявката вместо два низа, можете да използвате dateadd . Просто се уверете, че не прилагате никакви функции/манипулации към колоната ActivityDate, защото SQL Server няма да може да използва индекса, ако го направите.

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. SQL Server 2005 Използване на DateAdd за добавяне на ден към дата

  2. sql сървър, каскадно изтриване и таблица родител/дете

  3. sql ос с динамични колони

  4. SQL Server Промяна на модела за възстановяване

  5. SQL динамична опорна точка за цели