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

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

Mary-Kate Olsen
Mary-Kate Olsen原創
2025-01-10 14:16:41221瀏覽

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

T-SQL:精確時間四捨五入到最近的 15 分鐘

有效地將時間值舍入到最接近的 15 分鐘增量是一項常見的資料庫任務。本文示範了一種使用內建 T-SQL 函數的簡化方法,避免了使用者定義函數或 CASE 語句的複雜性。

目標是將時間值四捨五入到最接近的一刻鐘。 例如,“00:08:00”向上捨入為“00:15:00”,而“00:07:00”向下捨去為“00:00:00”。

一個高效率的方法是將 DATETADDDATEDIFF 函數結合。此公式利用與固定起點(例如「2000-01-01」)的分鐘差來計算最近的 15 分鐘間隔。 這可以避免在非常大的日期範圍內可能發生的潛在DATEDIFF整數溢位問題。

公式如下:

  1. DATEDIFF(minute, '2000-01-01', YourTimeValue): 計算固定日期和您的時間值之間的總分鐘數。

  2. / 15: 將總分鐘數除以 15 以決定 15 分鐘間隔的數量。

  3. * 15: 將結果乘以 15,得到最接近的 15 分鐘倍數。

  4. DATETADD(minute, ..., '2000-01-01'): 將計算出的分鐘加回固定日期,產生四捨五入的時間值。

因此,四捨五入到最接近的 15 分鐘的完整公式為:

<code class="language-sql">DATETADD(minute, (DATEDIFF(minute, '2000-01-01', YourTimeValue) / 15) * 15, '2000-01-01')</code>

YourTimeValue 替換為您的實際時間列或變數。

此技術適用於其他舍入間隔。 例如,要四捨五入到最接近的 30 秒,只需在公式中將 second 替換為 minute,將 30 替換為 15。 關鍵是使用固定的開始日期來防止溢出錯誤。 這種方法為 T-SQL 中的精確時間舍入提供了簡潔且有效率的解決方案。

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

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