Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengeluarkan Bahagian Masa dengan Cekap dari Medan Datetime SQL Server?

Bagaimana untuk Mengeluarkan Bahagian Masa dengan Cekap dari Medan Datetime SQL Server?

DDD
DDDasal
2025-01-22 10:57:14788semak imbas

How to Efficiently Remove the Time Portion from a SQL Server Datetime Field?

Mengoptimumkan Pengekstrakan Tarikh daripada Pelayan SQL datetime Medan

Mengekstrak hanya bahagian tarikh daripada medan SQL Server datetime ialah tugas biasa. Dua pendekatan lazim dibandingkan di sini untuk kecekapan:

Kaedah A:

<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>

Kaedah B:

<code class="language-sql">SELECT CAST(CONVERT(CHAR(11), GETDATE(), 113) AS DATETIME)</code>

Tanda Aras Prestasi

Walaupun kedua-dua kaedah secara amnya pantas, Kaedah A secara konsisten menunjukkan prestasi unggul, terutamanya dengan set data yang lebih besar. Ujian pada set data sejuta baris mendedahkan penggunaan CPU yang jauh lebih rendah menggunakan Kaedah A, menyerlahkan kecekapannya.

Faktor Tambahan

Melebihi kelajuan, pertimbangan lain mempengaruhi pemilihan kaedah:

  • Pemformatan Tempatan dan Tarikh: Pergantungan Kaedah B pada CONVERT kepada CHAR memperkenalkan potensi isu dengan format tarikh khusus setempat.
  • Pengendalian Jenis Data: Kaedah B menggunakan FLOAT secara dalaman, yang mungkin mempunyai implikasi storan.
  • Kebolehlanjutan: Kaedah A memberikan fleksibiliti yang lebih besar untuk melanjutkan pengiraan (cth., mencari hari pertama dalam bulan atau hari berikutnya).

SQL Server 2008 dan Kemudian

Untuk SQL Server 2008 dan versi seterusnya, fungsi CAST menawarkan alternatif yang diperkemas:

<code class="language-sql">CAST(GETDATE() AS DATE)</code>

Pendekatan ini cekap dan secara langsung mengembalikan DATE jenis data.

Pengoptimuman Indeks

Yang penting, penggunaan fungsi atau operasi CAST dalam klausa WHERE boleh menghalang penggunaan indeks, memberi kesan kepada prestasi pertanyaan. Elakkan amalan sedemikian apabila mungkin untuk mengekalkan kelajuan pertanyaan yang optimum.

Pengesyoran

Memandangkan prestasi dan kebolehsuaian, kaedah yang disyorkan untuk mengalih keluar komponen masa daripada medan datetime dalam SQL Server ialah:

<code class="language-sql">SELECT DATEADD(dd, DATEDIFF(dd, 0, GETDATE()), 0)</code>

Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Bahagian Masa dengan Cekap dari Medan Datetime SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!

Kenyataan:
Kandungan artikel ini disumbangkan secara sukarela oleh netizen, dan hak cipta adalah milik pengarang asal. Laman web ini tidak memikul tanggungjawab undang-undang yang sepadan. Jika anda menemui sebarang kandungan yang disyaki plagiarisme atau pelanggaran, sila hubungi admin@php.cn