Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Mengeluarkan Komponen Masa dengan Cekap dari Medan DateTime dalam SQL Server?
Cabaran:
Memproses set data SQL Server yang besar selalunya memerlukan penyingkiran cekap komponen masa daripada medan datetime. Dua teknik biasa yang kerap digunakan:
DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
CAST(CONVERT(CHAR(11), getdate(), 113) AS DATETIME)
Pendekatan Optimum:
Tanda aras prestasi secara konsisten menunjukkan DATEADD(dd, DATEDIFF(dd, 0, getdate()), 0)
sebagai kaedah yang paling berkesan. Pendekatan ini:
Versi SQL Server moden (2008 dan kemudian) menyediakan alternatif yang lebih baik:
CAST(getdate() AS DATE)
secara langsung menukar tarikh masa kepada jenis data tarikh, menghapuskan keperluan untuk mengalih keluar komponen masa.datetime2
, kaedah DATEADD
kekal terpakai, tetapi memerlukan pelarasan nilai zaman:<code class="language-sql">DECLARE @datetime2value datetime2 = '02180912 11:45'; -- Year 0218 within datetime2 DECLARE @datetime2epoch datetime2 = '19000101'; SELECT DATEADD(dd, DATEDIFF(dd, @datetime2epoch, @datetime2value), @datetime2epoch);</code>
Pertimbangan Utama:
WHERE
boleh memberi kesan negatif terhadap penggunaan indeks. Pertimbangan yang teliti adalah perlu.CAST(CHAR())
pada penukaran aksara memperkenalkan potensi kelemahan yang berkaitan dengan tetapan bahasa dan format tarikh.FLOAT
untuk menyimpan tarikh kerana perwakilan dalamannya, yang mungkin tidak optimum untuk set data yang besar.Atas ialah kandungan terperinci Bagaimana untuk Mengeluarkan Komponen Masa dengan Cekap dari Medan DateTime dalam SQL Server?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!