sql >> Database >  >> RDS >> Sqlserver

Hoe efficiënt is de functie JAAR(datum)?

Het is niet nodig om een ​​berekende kolom te hebben om "een tabel te zoeken" voor rijen die overeenkomen met een jaar. Schrijf je waar-clausule in plaats daarvan met een interval en plaats een index in je datumkolom.

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

Als u een int (jaar) als argument voor de query wilt gebruiken in plaats van twee strings, kunt u dateadd gebruiken . Zorg er wel voor dat u geen functies/manipulaties toepast op de ActivityDate-kolom, omdat SQL Server de index dan niet kan gebruiken.

declare @Year int = 2011

select SomeColumn
from YourTable
where ActivityDate >= dateadd(year, @Year-1900, 0) and
      ActivityDate < dateadd(year, @Year-1899, 0)      


  1. FOUT 1305 (42000):SAVEPOINT ... bestaat niet

  2. SSIS laat een record vallen bij het importeren van platte bestandsbronnen

  3. Uw ultieme gids voor SQL-joins:OUTER JOIN - Deel 2

  4. SQLiteException geen dergelijke tabel:ItemTable tijdens het compileren:Select_id,.... van ItemTable