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

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

DDD
DDD原創
2025-01-11 10:09:42876瀏覽

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

精確到分鐘或小時的 T-SQL 日期時間值捨去方法

SQL Server 提供內建函數,可以輕鬆地將日期時間值捨去到最近的分鐘或小時。例如,對於給定的日期時間值 '2007-09-22 15:07:38.850',可以使用下列函數:

<code class="language-sql">-- 舍入到最近的分钟
SELECT DATEADD(mi, DATEDIFF(mi, 0, @dt), 0)

-- 舍入到最近的小时
SELECT DATEADD(hour, DATEDIFF(hour, 0, @dt), 0)</code>

這些方法分別截斷秒和分鐘,以達到所需的捨入效果。 如果需要向上或向下舍入,可以在截斷之前分別添加或減去半分鐘或半小時:

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

在 SQL Server 2008 引入 date 資料類型之前,上述方法可用於從 datetime 類型中截斷時間部分,只保留日期部分。這透過計算日期時間和一個固定時間點(0,代表 1900-01-01 00:00:00.000)之間的天數,然後將該天數加到固定時間點來實現:

<code class="language-sql">-- 截断时间部分以仅获取日期
SELECT DATEADD(day, DATEDIFF(day, 0, @dt), 0)</code>

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

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