sql >> Databáze >  >> RDS >> Sqlserver

Jak efektivní je funkce YEAR(datum)?

Není potřeba mít vypočítaný sloupec pro „vyhledávání tabulky“ pro řádky, které odpovídají jednomu roku. Napište si klauzuli where s použitím intervalu a mějte index ve sloupci data.

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

Pokud chcete jako argument v dotazu použít místo dvou řetězců int (rok), můžete použít dateadd . Jen se ujistěte, že na sloupec ActivityDate neaplikujete žádné funkce/manipulace, protože SQL Server nebude moci index použít.

declare @Year int = 2011

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


  1. MySQL seskupí se 2 sloupci, když se hodnoty ve sloupcích zaměňují

  2. Jak implementovat SQLCipher při použití SQLiteOpenHelper

  3. Výběr MIN i MAX z tabulky je pomalejší, než se očekávalo

  4. Počítejte data z více tabulek pomocí SUM