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

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

Susan Sarandon
发布: 2025-01-10 13:56:42
原创
656 人浏览过

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中文网其他相关文章!

来源:php.cn
本站声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
作者最新文章
热门教程
更多>
最新下载
更多>
网站特效
网站源码
网站素材
前端模板