在 T-SQL 中将 HH:MM 值四舍五入到最接近的 15 分钟间隔
处理时间值时,四舍五入到特定间隔是一个常见任务。本文探讨了一种优雅的 T-SQL 方法,用于将 HH:MM 值四舍五入到最接近的 15 分钟间隔,无需依赖用户定义函数 (UDF) 或 case 语句。
解决方案:
此技术的关键在于使用 datediff()
和 dateadd()
函数来操作日期组件,同时忽略秒。通过计算输入日期时间和时间组件为 00:00:00 的固定日期之间的差值,我们可以确定经过的分钟数。
然后,可以将此值除以 15 以获得 15 分钟间隔数。结果乘以 15 并使用 dateadd()
添加回固定日期,以得出四舍五入到最接近的 15 分钟间隔的舍入时间。
示例查询:
考虑以下示例查询:
<code class="language-sql">SELECT dateadd(minute, datediff(minute, '2023-01-01', GETDATE()) / 15 * 15, '2023-01-01') AS RoundedTime</code>
将 GETDATE()
替换为您所需的日期时间值将返回四舍五入的 HH:MM 值,如下所示:
<code>| 输入时间 | 舍入时间 | |---|---| | 00:08:00 | 00:15:00 | | 00:07:00 | 00:00:00 | | 01:59:00 | 02:00:00 |</code>
注意事项:
这种方法确保了始终如一的舍入行为,而不管输入时间值如何。在处理较大的日期范围时,它还可以避免潜在的溢出错误。虽然它不需要强制转换,但必须使用时间组件为 00:00:00 的适当固定日期作为计算的基础。
以上是如何在 T-SQL 中将 HH:MM 时间值舍入到最接近的 15 分钟?的详细内容。更多信息请关注PHP中文网其他相关文章!