Rumah >pangkalan data >tutorial mysql >Bagaimana untuk Membundarkan Nilai Masa T-SQL dengan Cekap kepada Selang 15 Minit Terdekat?

Bagaimana untuk Membundarkan Nilai Masa T-SQL dengan Cekap kepada Selang 15 Minit Terdekat?

Susan Sarandon
Susan Sarandonasal
2025-01-10 13:56:42617semak imbas

How to Efficiently Round T-SQL Time Values to the Nearest 15-Minute Interval?

Pengiraan tepat: Bundarkan nilai masa T-SQL ​​ke selang 15 minit terdekat

Apabila berurusan dengan data berasaskan masa dalam T-SQL, selalunya perlu untuk membundarkan nilai kepada selang masa tertentu. Keperluan biasa adalah untuk membundarkan nilai HH:MM kepada selang 15 minit yang terdekat.

Kaedah pembundaran yang cekap

Cara yang cekap untuk membundarkan nilai masa ke selang 15 minit terdekat tanpa bergantung pada pernyataan UDF atau CASE yang kompleks, sebaliknya menggunakan fungsi DATEADD dan DATEDIFF. Kaedah ini termasuk:

  • Gunakan DATEDIFF untuk mengira perbezaan antara nilai masa tertentu dan tarikh sifar (0).
  • Gunakan pembahagian integer untuk membahagikan perbezaan dengan 15 untuk menentukan berapa banyak selang 15 minit telah berlalu.
  • Gunakan DATEADD untuk mendarab hasil dengan 15 dan menambah bilangan minit yang sesuai kepada tarikh sifar.

Contoh

Gunakan kaedah ini untuk keperluan khusus anda untuk pengiraan menggunakan fungsi CONVERT, DATEADD dan DATEDIFF dan anda akan mendapat pertanyaan berikut:

<code class="language-sql">SELECT DATEADD(MINUTE, ROUND(DATEDIFF(MINUTE, 0, CONVERT(CHAR(8), DATEADD(n, SUM(DATEDIFF(n, starttime, stoptime)), 0), 108)) / 15.0, 0) * 15, 0)</code>

Pengiraan ini membundarkan nilai masa HH:MM tepat kepada selang 15 minit yang terdekat, memastikan nilai seperti 00:08:00 menjadi 00:15:00 dan 00:07:00 menjadi 00: 00:00.

Kaedah lain

Walaupun kaedah DATEADD dan DATEDIFF adalah cekap dan tepat, terdapat beberapa kaedah lain yang boleh anda pertimbangkan untuk membundarkan nilai masa dalam T-SQL:

  • Gunakan fungsi ROUND dan tentukan selang:

    <code class="language-sql">  ROUND(time_value, 15)</code>
  • Menggunakan fungsi FLOOR SQL Server 2012:

    <code class="language-sql">  FLOOR(DATEADD(MINUTE, time_value, 0))</code>

Atas ialah kandungan terperinci Bagaimana untuk Membundarkan Nilai Masa T-SQL dengan Cekap kepada Selang 15 Minit Terdekat?. 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