[英]SQL Server Split Day in 4 Blocks of 2 hours
I have few records of tasks with StartTime and StopTime and I would like to split it in 4 records of 2 hours (8:30 - 10:30 / 10:30 - 12:30 / 13:00 - 15:00 / 15:00 - 17:00) Typically, i would like to split this row : 我的StartTime和StopTime任务记录很少,我想将其分为4小时的2小时记录(8:30-10:30 / 10:30-12:30 / 13:00-15:00 / 15: 00-17:00)通常,我想分割此行:
From
Title StartTime StopTime
Task1 2013-11-12 09:00 2013-11-12 14:00
To
Title StartTime StopTime
Task1 2013-11-12 09:30 2013-11-12 10:30
Task1 2013-11-12 10:30 2013-11-12 12:30
Task1 2013-11-12 12:30 2013-11-12 14:00
Any suggestion is welcome, thanks. 任何建议都值得欢迎,谢谢。
Try this query: 试试这个查询:
select [TaskName],
CASE WHEN CONVERT(varchar,StartTime,108)<pStart
THEN floor(CAST(StartTime as float))+Cast(pStart as Datetime)
ELSE StartTime
END as StartTime,
CASE WHEN CONVERT(varchar,StopTime,108)>pEnd
THEN floor(CAST(StopTime as float))+Cast(pEnd as Datetime)
ELSE StopTime
END as StopTime
FROM T
JOIN
(
SELECT '08:30:00' as pStart, '10:30:00' as pEnd
UNION ALL
SELECT '10:30:00' as pStart, '12:30:00' as pEnd
UNION ALL
SELECT '13:00:00' as pStart, '15:00:00' as pEnd
UNION ALL
SELECT '15:00:00' as pStart, '17:00:00' as pEnd
) as DayParts
ON (CONVERT(varchar,StartTime,108)<=pEnd
AND
CONVERT(varchar,StopTime,108)>=pEnd
)
OR
(
CONVERT(varchar,StopTime,108)>=pStart
AND
CONVERT(varchar,StartTime,108)<=pStart
)
ORDER BY TaskName,StartTime
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.