首页 >数据库 >mysql教程 >如何有效地将 T-SQL 时间值舍入到最接近的 15 分钟间隔?

如何有效地将 T-SQL 时间值舍入到最接近的 15 分钟间隔?

Susan Sarandon
Susan Sarandon原创
2025-01-10 13:56:42657浏览

How to Efficiently Round T-SQL Time Values to the Nearest 15-Minute Interval?

精确计算:将T-SQL时间值四舍五入到最接近的15分钟间隔

在T-SQL中处理基于时间的数据时,通常需要将值四舍五入到特定的时间间隔。一个常见的需求是将HH:MM值四舍五入到最接近的15分钟间隔。

高效的四舍五入方法

一种有效的将时间值四舍五入到最接近的15分钟间隔的方法,无需依赖复杂的UDF或CASE语句,而是利用DATEADD和DATEDIFF函数。此方法包括:

  • 使用DATEDIFF计算给定时间值与零(0)日期之间的差值。
  • 使用整数除法将差值除以15,以确定经过了多少个15分钟的间隔。
  • 使用DATEADD将结果乘以15,并将适当的分钟数添加到零日期。

示例

将此方法应用于您使用CONVERT、DATEADD和DATEDIFF函数进行计算的特定需求,您将得到以下查询:

<code class="language-sql">SELECT DATEADD(MINUTE, ROUND(DATEDIFF(MINUTE, 0, CONVERT(CHAR(8), DATEADD(n, SUM(DATEDIFF(n, starttime, stoptime)), 0), 108)) / 15.0, 0) * 15, 0)</code>

此计算将HH:MM时间值精确地四舍五入到最接近的15分钟间隔,确保像00:08:00这样的值变为00:15:00,而00:07:00变为00:00:00。

其他方法

虽然DATEADD和DATEDIFF方法高效且准确,但您可以考虑其他几种在T-SQL中四舍五入时间值的方法:

  • 使用ROUND函数并指定间隔:

    <code class="language-sql">  ROUND(time_value, 15)</code>
  • 使用SQL Server 2012的FLOOR函数:

    <code class="language-sql">  FLOOR(DATEADD(MINUTE, time_value, 0))</code>

以上是如何有效地将 T-SQL 时间值舍入到最接近的 15 分钟间隔?的详细内容。更多信息请关注PHP中文网其他相关文章!

声明:
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn