SQL Server-将时间向上/向下舍入为30分钟



我有下表:

EMP_NO      SHIFT_START_TIME    SHIFT_END_TIME
1234345     09:39               14:39

我需要四舍五入";向上";开始时间到最近的30分钟间隔;向下";结束时间。

预期结果

EMP_NO      SHIFT_START_TIME    SHIFT_END_TIME
1234345     10:00               14:30

代码:

SELECT '09:39', '14:39'

一种方法使用时间函数——计算自时间以来的分钟数"0";然后使用算术将间隔向上或向下舍入为30分钟:

select convert(time, dateadd(minute, ceiling(datediff(minute, 0, start_tm) / 30.0) * 30, 0)),
convert(time, dateadd(minute, (datediff(minute, 0, end_tm) / 30) * 30, 0))
from (values (convert(time, '09:39'), convert(time, '14:39'))) v(start_tm, end_tm)

最新更新