Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membandingkan Nilai Masa dengan Cekap dalam SQL Server?

Bagaimana untuk Membandingkan Nilai Masa dengan Cekap dalam SQL Server?

Patricia Arquette
Patricia Arquetteasal
2024-12-25 08:27:50862semak imbas

How to Efficiently Compare Time Values in SQL Server?

Membandingkan Masa dalam SQL Server

Apabila membandingkan nilai masa dalam pertanyaan SQL, adalah penting untuk mengasingkan komponen masa daripada tarikh. Pendekatan yang diberikan untuk menggunakan convert(datetime, ...) kepada perwakilan rentetan dan kemudian membandingkan adalah tidak disyorkan kerana prestasinya yang perlahan.

Kaedah yang lebih cekap ialah memanfaatkan perwakilan titik terapung intrinsik SQL Server tarikh. Bahagian integer mewakili tarikh, manakala bahagian perpuluhan mewakili masa.

declare @first datetime
set @first = '2009-04-30 19:47:16.123'
declare @second datetime
set @second = '2009-04-10 19:47:16.123'

select (cast(@first as float) - floor(cast(@first as float))) -
       (cast(@second as float) - floor(cast(@second as float)))
       as Difference

Pendekatan ini menolak bahagian kamiran tarikh, hanya meninggalkan bahagian perpuluhan (masa). Perbezaan yang terhasil mewakili perbezaan masa.

Sebagai contoh, membandingkan '08:00:00' dan '07:30:00' dalam SQL Server menggunakan kaedah ini:

declare @first datetime
set @first = '08:00:00.000'
declare @second datetime
set @second = '07:30:00.000'

select (cast(@first as float) - floor(cast(@first as float))) -
       (cast(@second as float) - floor(cast(@second as float)))
       as Difference

Hasil :

Difference
------------
0.5

Ini mengesahkan bahawa '08:00:00' lebih besar daripada '07:30:00' selama 30 minit.

Atas ialah kandungan terperinci Bagaimana untuk Membandingkan Nilai Masa dengan Cekap dalam 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