首頁 >資料庫 >mysql教程 >如何有效地將 T-SQL 時間值舍入到最接近的 15 分鐘間隔?

如何有效地將 T-SQL 時間值舍入到最接近的 15 分鐘間隔?

Susan Sarandon
Susan Sarandon原創
2025-01-10 13:56:42657瀏覽

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

精確計算:將T-SQL時間值四捨五入到最接近的15分鐘間隔

在T-SQL中處理基於時間的資料時,通常需要將值四捨五入到特定的時間間隔。一個常見的需求是將HH:MM值四捨五入到最接近的15分鐘間隔。

高效率的四捨五入方法

一種有效的將時間值四捨五入到最接近的15分鐘間隔的方法,無需依賴複雜的UDF或CASE語句,而是利用DATEADD和DATEDIFF函數。此方法包括:

  • 使用DATEDIFF計算給定時間值與零(0)日期之間的差值。
  • 使用整數除法將差值除以15,以確定經過了多少個15分鐘的間隔。
  • 使用DATEADD將結果乘以15,並將適當的分鐘數加到零日期。

範例

將此方法應用於您使用CONVERT、DATEADD和DATEDIFF函數進行計算的特定需求,您將得到以下查詢:

<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>

此計算將HH:MM時間值精確地四捨五入到最接近的15分鐘間隔,確保像00:08:00這樣的值變為00:15:00,而00:07:00變成00: 00:00。

其他方法

雖然DATEADD和DATEDIFF方法高效且準確,但您可以考慮其他幾種在T-SQL中四捨五入時間值的方法:

  • 使用ROUND函數並指定間隔:

    <code class="language-sql">  ROUND(time_value, 15)</code>
  • 使用SQL Server 2012的FLOOR函數:

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

以上是如何有效地將 T-SQL 時間值舍入到最接近的 15 分鐘間隔?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn