首页 >数据库 >mysql教程 >如何将 T-SQL 日期时间值舍入到最接近的分钟或小时?

如何将 T-SQL 日期时间值舍入到最接近的分钟或小时?

DDD
DDD原创
2025-01-11 10:09:42879浏览

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