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

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

Patricia Arquette
Patricia Arquette原创
2025-01-11 11:28:40185浏览

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