Sqlserver
 sql >> Teknologi Basis Data >  >> RDS >> Sqlserver

Seberapa efisien fungsi YEAR(date)?

Tidak perlu memiliki kolom yang dihitung untuk "mencari tabel" untuk baris yang cocok dengan satu tahun. Tulis Anda di mana klausa menggunakan interval sebagai gantinya dan memiliki indeks di kolom tanggal Anda.

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

Jika Anda ingin menggunakan int (tahun) sebagai argumen untuk kueri alih-alih dua string, Anda dapat menggunakan dateadd . Pastikan Anda tidak menerapkan fungsi/manipulasi apa pun ke kolom ActivityDate karena SQL Server tidak akan dapat menggunakan indeks jika Anda melakukannya.

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. XPath untuk mengambil nilai SQL XML

  2. Referensi Kursor SQL Server (Sintaks, dll)

  3. Tinjauan Perangkat Lunak – Perbaikan Stellar untuk MS SQL

  4. Jenis teks SQL Server vs. tipe data varchar

  5. hitung jumlah spasi dalam nilai di server sql