T-SQL: Pembundaran Masa Tepat kepada 15 Minit Terdekat
Membundarkan nilai masa dengan cekap kepada kenaikan 15 minit yang terdekat ialah tugas pangkalan data biasa. Artikel ini menunjukkan pendekatan yang diperkemas menggunakan fungsi T-SQL terbina dalam, mengelakkan kerumitan fungsi yang ditentukan pengguna atau pernyataan CASE.
Objektifnya adalah untuk membundarkan nilai masa kepada suku jam terdekat. Contohnya, "00:08:00" dibundarkan kepada "00:15:00", manakala "00:07:00" dibundarkan ke bawah kepada "00:00:00."
Kaedah yang sangat cekap melibatkan penggabungan fungsi DATETADD
dan DATEDIFF
. Formula memanfaatkan perbezaan dalam minit dari titik permulaan tetap (mis., '2000-01-01') untuk mengira selang 15 minit yang terdekat. Ini mengelakkan kemungkinan DATEDIFF
isu limpahan integer yang boleh berlaku dengan julat tarikh yang sangat besar.
Formula berfungsi seperti berikut:
DATEDIFF(minute, '2000-01-01', YourTimeValue)
: Mengira jumlah minit antara tarikh tetap dan nilai masa anda.
/ 15
: Membahagikan jumlah minit dengan 15 untuk menentukan bilangan selang 15 minit.
* 15
: Darabkan hasil dengan 15 untuk mendapatkan gandaan terdekat 15 minit.
DATETADD(minute, ..., '2000-01-01')
: Menambah minit yang dikira kembali ke tarikh tetap, menghasilkan nilai masa yang dibulatkan.
Oleh itu, formula lengkap untuk membundarkan kepada 15 minit terdekat ialah:
<code class="language-sql">DATETADD(minute, (DATEDIFF(minute, '2000-01-01', YourTimeValue) / 15) * 15, '2000-01-01')</code>
Ganti YourTimeValue
dengan lajur atau pembolehubah masa sebenar anda.
Teknik ini boleh disesuaikan dengan selang pembundaran lain. Sebagai contoh, untuk membundarkan kepada 30 saat terdekat, cuma gantikan second
untuk minute
dan 30
untuk 15
dalam formula. Kuncinya ialah menggunakan tarikh mula tetap untuk mengelakkan ralat limpahan. Pendekatan ini menyediakan penyelesaian yang ringkas dan cekap untuk pembundaran masa yang tepat dalam T-SQL.
Atas ialah kandungan terperinci Bagaimana untuk Membundarkan Nilai Masa Secara Cekap kepada Selang 15 Minit Terdekat dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!