首頁 > 資料庫 > mysql教程 > 如何將 T-SQL DateTime 捨去到最接近的分鐘和小時?

如何將 T-SQL DateTime 捨去到最接近的分鐘和小時?

Patricia Arquette
發布: 2025-01-11 09:59:50
原創
740 人瀏覽過

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

使用函數將 T-SQL DateTime 舍入到最近的分鐘和小時

問題:

如何使用現有函數將 datetime 列舍入到最近的分鐘和小時?

解:

要將 datetime 欄位捨入到最近的分鐘,請使用以下程式碼:

<code class="language-sql">select dateadd(mi, datediff(mi, 0, @dt), 0)</code>
登入後複製

其中 @dt 是您要捨入的 datetime 欄位。

要將 datetime 欄位舍入到最近的小時,請使用以下程式碼:

<code class="language-sql">select dateadd(hour, datediff(hour, 0, @dt), 0)</code>
登入後複製

例如,如果您的 @dt 列值為 '09-22-2007 15:07:38.850',則這些查詢將傳回:

  • 最近的分鐘:2007-09-22 15:07:00.000
  • 最近的小時: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>
登入後複製

這些查詢將會傳回:

  • 最近的分鐘,向上捨入:2007-09-22 15:08:00.000
  • 最近的小時,向上捨入:2007-09-22 16:00:00.000

截斷時間部分以取得日期:

在 SQL Server 2008 引入 date 資料類型之前,您可以使用類似的方法從 datetime 中截斷時間部分以僅取得日期:

<code class="language-sql">-- 获取 datetime 和固定点 (1900-01-01 00:00:00.000) 之间的日数
declare @days int
set @days = datediff(day, 0, @dt)

-- 将日数添加到固定点以获取日期,并将时间设置为 00:00:00.000
select dateadd(day, @days, 0)</code>
登入後複製

這將傳回 @dt 列的日期部分,時間設定為 00:00:00.000。

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

來源:php.cn
本網站聲明
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn
作者最新文章
熱門教學
更多>
最新下載
更多>
網站特效
網站源碼
網站素材
前端模板