T-SQL:精确时间四舍五入到最近的 15 分钟
有效地将时间值舍入到最接近的 15 分钟增量是一项常见的数据库任务。本文演示了一种使用内置 T-SQL 函数的简化方法,避免了用户定义函数或 CASE 语句的复杂性。
目标是将时间值四舍五入到最接近的一刻钟。 例如,“00:08:00”向上舍入为“00:15:00”,而“00:07:00”向下舍入为“00:00:00”。
一种高效的方法是将 DATETADD
和 DATEDIFF
函数结合起来。该公式利用与固定起点(例如“2000-01-01”)的分钟差来计算最近的 15 分钟间隔。 这可以避免在非常大的日期范围内可能发生的潜在DATEDIFF
整数溢出问题。
公式如下:
DATEDIFF(minute, '2000-01-01', YourTimeValue)
: 计算固定日期和您的时间值之间的总分钟数。
/ 15
: 将总分钟数除以 15 以确定 15 分钟间隔的数量。
* 15
: 将结果乘以 15,得到最接近的 15 分钟倍数。
DATETADD(minute, ..., '2000-01-01')
: 将计算出的分钟添加回固定日期,产生四舍五入的时间值。
因此,四舍五入到最接近的 15 分钟的完整公式为:
<code class="language-sql">DATETADD(minute, (DATEDIFF(minute, '2000-01-01', YourTimeValue) / 15) * 15, '2000-01-01')</code>
将 YourTimeValue
替换为您的实际时间列或变量。
该技术适用于其他舍入间隔。 例如,要四舍五入到最接近的 30 秒,只需在公式中将 second
替换为 minute
,将 30
替换为 15
。 关键是使用固定的开始日期来防止溢出错误。 这种方法为 T-SQL 中的精确时间舍入提供了简洁高效的解决方案。
以上是如何在 T-SQL 中有效地将时间值舍入到最接近的 15 分钟间隔?的详细内容。更多信息请关注PHP中文网其他相关文章!