首頁 >資料庫 >mysql教程 >如何在 T-SQL 中將日期時間值捨去到最接近的分鐘或小時?

如何在 T-SQL 中將日期時間值捨去到最接近的分鐘或小時?

Patricia Arquette
Patricia Arquette原創
2025-01-11 11:28:40108瀏覽

How to Round DateTime Values to the Nearest Minute or Hour in T-SQL?

在 T-SQL 中將日期時間值捨去到最近的分鐘或小時

T-SQL 提供內建函數,可以將日期時間值捨去到最近的分鐘或小時。舍入後的值對於資料分析和報表產生非常有價值。

要將日期時間值捨去到最近的分鐘,請使用以下公式:

<code class="language-sql">dateadd(mi, datediff(mi, 0, @dt), 0)</code>

其中,@dt 表示要捨入的日期時間值。

例如,將值 '09-22-2007 15:07:38.850' 捨去到最近的分鐘,結果為 '2007-09-22 15:07:00.000'。

要將日期時間值捨去到最近的小時,請使用:

<code class="language-sql">dateadd(hour, datediff(hour, 0, @dt), 0)</code>

此公式有效地從日期時間值中截斷秒和分鐘。使用相同的範例,將 '09-22-2007 15:07:38.850' 舍入到最近的小時,結果為 '2007-09-22 15:00:00.000'。

此外,可以透過在截斷之前向日期時間值添加半分鐘或半小時來實現向上或向下舍入。

範例:

<code class="language-sql">select dateadd(mi, datediff(mi, 0, dateadd(s, 30, @dt)), 0)
select dateadd(hour, datediff(hour, 0, dateadd(mi, 30, @dt)), 0)</code>

結果為:

<code>2007-09-22 15:08:00.000
2007-09-22 15:00:00.000</code>

在 SQL Server 2008 引入 date 資料類型之前,類似的技術用於截斷日期時間值的時分秒部分以僅取得日期。其想法是確定日期時間與固定時間點 (0,表示 1900-01-01 00:00:00.000) 之間的日數。將此日數加到固定時間點,可以獲得時間設定為 00:00:00.000 的原始日期。

以上是如何在 T-SQL 中將日期時間值捨去到最接近的分鐘或小時?的詳細內容。更多資訊請關注PHP中文網其他相關文章!

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