我有下表:
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)