精确到分钟或小时的 T-SQL 日期时间值舍入方法
SQL Server 提供内置函数,可以轻松地将日期时间值舍入到最近的分钟或小时。例如,对于给定的日期时间值 '2007-09-22 15:07:38.850',可以使用以下函数:
<code class="language-sql">-- 舍入到最近的分钟 SELECT DATEADD(mi, DATEDIFF(mi, 0, @dt), 0) -- 舍入到最近的小时 SELECT DATEADD(hour, DATEDIFF(hour, 0, @dt), 0)</code>
这些方法分别截断秒和分钟,以达到所需的舍入效果。 如果需要向上或向下舍入,可以在截断之前分别添加或减去半分钟或半小时:
<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>
在 SQL Server 2008 引入 date
数据类型之前,上述方法可用于从 datetime
类型中截断时间部分,只保留日期部分。这通过计算日期时间和一个固定时间点(0,代表 1900-01-01 00:00:00.000)之间的天数,然后将该天数添加到固定时间点来实现:
<code class="language-sql">-- 截断时间部分以仅获取日期 SELECT DATEADD(day, DATEDIFF(day, 0, @dt), 0)</code>
以上是如何将 T-SQL 日期时间值舍入到最接近的分钟或小时?的详细内容。更多信息请关注PHP中文网其他相关文章!