T-SQL:精確時間四捨五入到最近的 15 分鐘
有效地將時間值舍入到最接近的 15 分鐘增量是一項常見的資料庫任務。本文示範了一種使用內建 T-SQL 函數的簡化方法,避免了使用者定義函數或 CASE 語句的複雜性。
目標是將時間值四捨五入到最接近的一刻鐘。 例如,“00:08:00”向上捨入為“00:15:00”,而“00:07:00”向下捨去為“00:00:00”。
一個高效率的方法是將 DATETADD
和 DATEDIFF
函數結合。此公式利用與固定起點(例如「2000-01-01」)的分鐘差來計算最近的 15 分鐘間隔。 這可以避免在非常大的日期範圍內可能發生的潛在DATEDIFF
整數溢位問題。
公式如下:
DATEDIFF(minute, '2000-01-01', YourTimeValue)
: 計算固定日期和您的時間值之間的總分鐘數。
/ 15
: 將總分鐘數除以 15 以決定 15 分鐘間隔的數量。
* 15
: 將結果乘以 15,得到最接近的 15 分鐘倍數。
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中文網其他相關文章!