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
Lepaskan: 2025-01-10 13:56:42
asal
677 orang telah melayarinya

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:

SELECT DATEADD(MINUTE, ROUND(DATEDIFF(MINUTE, 0, CONVERT(CHAR(8), DATEADD(n, SUM(DATEDIFF(n, starttime, stoptime)), 0), 108)) / 15.0, 0) * 15, 0)
Salin selepas log masuk

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:

      ROUND(time_value, 15)
    Salin selepas log masuk
  • Menggunakan fungsi FLOOR SQL Server 2012:

      FLOOR(DATEADD(MINUTE, time_value, 0))
    Salin selepas log masuk

    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 Laman Web ini
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
Artikel terbaru oleh pengarang
Tutorial Popular
Lagi>
Muat turun terkini
Lagi>
kesan web
Kod sumber laman web
Bahan laman web
Templat hujung hadapan