求按小时拆分时间段的sql语句

我想写一个存储过程来实现下面的需求:
一个时间字段是跨小时的,现在要按照小时截取出来。
废话不多,举例说明:
表ta字段:ID,StartTime,StopTime
1,2011-05-05 07:12:00,2011-05-05 10:35:00

我要把上面的数据按小时拆分成四条:
1,2011-05-05 07:12:00,2011-05-05 08:00:00
1,2011-05-05 08:00:00,2011-05-05 09:00:00
1,2011-05-05 09:00:00,2011-05-05 10:00:00
1,2011-05-05 10:00:00,2011-05-05 10:35:00

谢谢大家!

作者: fihuang   发布时间: 2011-05-06

lsb1:从1-24,字段ID,类型自增
SELECT *,
IF(b.id<=HOUR(a.StartTime) OR (b.id>HOUR(a.StartTime) AND b.id<HOUR(a.StopTime)),
CAST(CONCAT(DATE(a.StartTime),' ',b.id+1,':00:00') AS DATETIME),
IF(b.id=HOUR(a.StopTime),(a.StopTime),CAST(CONCAT(DATE(a.StartTime),' ',b.id,':00:00') AS DATETIME))) AS newstop,

IF(b.id<=HOUR(a.StartTime),a.StartTime,IF(b.id>HOUR(a.StartTime) AND b.id<HOUR(a.StopTime),
CAST(CONCAT(DATE(a.StartTime),' ',b.id,':00:00') AS DATETIME),
IF(b.id=HOUR(a.StopTime),CAST(CONCAT(DATE(a.StartTime),' ',b.id,':00:00') AS DATETIME),b.id))) AS newstart
 
 FROM ttf a LEFT JOIN zz.lsb1 b ON b.id BETWEEN HOUR(a.StartTime) AND HOUR(a.StopTime)

作者: WWWWA   发布时间: 2011-05-06