我在我的应用程序中遇到了一些时间数据的有趣挑战。我有一张开始和结束时间的表格;并且需要减去班次时间以保持差异以获得多行。我目前正在尝试在我的 SQL Server 2008 机器上执行此操作。
这个想法是,如果我有一个像
Start 09:00 End 19:12
班次说 09:00 -> 17:00 我需要将数据拆分/分成两行
Start 09:00 End 17:00
Start 17:00 End 19:12
这也需要在午夜工作;创建了一些暂存数据,因为我一直在玩一些想法,但我想知道是否有办法摆脱案例陈述。
Create Table dbo.tblClockEvents
(
DayOfWeek Int,
ClockOn Time,
ClockOff Time
)
Create Table dbo.tblShiftPattern
(
DayOfWeek Int,
StartTime Time,
EndTime Time
)
insert into dbo.tblShiftPattern
select 1, '07:30', '17:00'
union select 2, '09:30', '18:00'
union select 3, '09:30', '18:00'
union select 4, '09:30', '18:00'
union select 5, '20:30', '04:00'
insert into dbo.tblClockEvents
select 1, '07:30', '17:00'
union select 2, '09:22', '18:14'
union select 3, '09:12', '18:01'
union select 4, '09:22', '18:14'
union select 5, '20:22', '04:14'
Select *
from dbo.tblClockEvents aa
inner join tblShiftPattern bb
on aa.DayOfWeek = bb.DayOfWeek