Bundarkan nilai HH:MM ke selang 15 minit terdekat dalam T-SQL
Membundar kepada selang tertentu ialah tugas biasa apabila bekerja dengan nilai masa. Artikel ini meneroka kaedah T-SQL yang elegan untuk membundarkan nilai HH:MM ke selang 15 minit terdekat tanpa bergantung pada fungsi takrif pengguna (UDF) atau pernyataan kes.
Penyelesaian:
Kunci kepada teknik ini ialah menggunakan fungsi datediff()
dan dateadd()
untuk memanipulasi komponen tarikh sambil mengabaikan detik. Kita boleh menentukan bilangan minit berlalu dengan mengira perbezaan antara masa tarikh input dan tarikh tetap dengan komponen masa 00:00:00.
Nilai ini kemudiannya boleh dibahagikan dengan 15 untuk mendapatkan bilangan selang 15 minit. Hasilnya didarab dengan 15 dan ditambah kembali ke tarikh tetap menggunakan dateadd()
untuk memberikan masa bulat yang dibundarkan kepada selang 15 minit yang terdekat.
Contoh pertanyaan:
Pertimbangkan contoh pertanyaan berikut:
<code class="language-sql">SELECT dateadd(minute, datediff(minute, '2023-01-01', GETDATE()) / 15 * 15, '2023-01-01') AS RoundedTime</code>
Menggantikan GETDATE()
dengan nilai datetime yang anda inginkan akan mengembalikan nilai HH:MM bulat seperti ini:
<code>| 输入时间 | 舍入时间 | |---|---| | 00:08:00 | 00:15:00 | | 00:07:00 | 00:00:00 | | 01:59:00 | 02:00:00 |</code>
Nota:
Pendekatan ini memastikan gelagat pembundaran yang konsisten tanpa mengira nilai masa input. Ia juga mengelakkan kemungkinan ralat limpahan apabila berurusan dengan julat tarikh yang lebih besar. Walaupun ia tidak memerlukan pelakon, tarikh tetap yang sesuai dengan komponen masa 00:00:00 mesti digunakan sebagai asas untuk pengiraan.
Atas ialah kandungan terperinci Bagaimana untuk Membundarkan Nilai Masa HH:MM kepada 15 Minit Terdekat dalam T-SQL?. Untuk maklumat lanjut, sila ikut artikel berkaitan lain di laman web China PHP!