我正在使用一个日程表,办公室在早上有约会,然后在午餐时被封锁,然后在下午有更多的约会。该办公室正在寻求根据已有的开始和结束时间即时更改其预约频率和数量的能力。
例如:如果办公室在10-12点每 60 分钟有一次约会,从 12-1 午餐和下午 1-3 点约会,那么日程表将如下所示
Day Time IsBlocked EndTime
2013-07-01 10:00:00.0000000 0 NULL
2013-07-01 11:00:00.0000000 0 NULL
2013-07-01 12:00:00.0000000 1 13:00:00.0000000
2013-07-01 13:00:00.0000000 0 NULL
2013-07-01 14:00:00.0000000 0 NULL
假设他们想将那一天的约会更改为每半小时(30 分钟)2 次约会, 他们可以调用存储过程
ChangeAppointmentFrequency(@day = '7/1/2013', @intervalInMinutes = 30, @numberOfAppointmentsInTheInterval = 2)
它将在新插槽中插入新约会,并保持任何现有约会不变。
Day Time IsBlocked EndTime
2013-07-01 10:00:00.0000000 0 NULL
2013-07-01 10:00:00.0000000 0 NULL
2013-07-01 10:30:00.0000000 0 NULL
2013-07-01 10:30:00.0000000 0 NULL
2013-07-01 11:00:00.0000000 0 NULL
2013-07-01 11:00:00.0000000 0 NULL
2013-07-01 11:30:00.0000000 0 NULL
2013-07-01 11:30:00.0000000 0 NULL
2013-07-01 12:00:00.0000000 1 13:00:00.0000000
2013-07-01 13:00:00.0000000 0 NULL
2013-07-01 13:00:00.0000000 0 NULL
2013-07-01 13:30:00.0000000 0 NULL
2013-07-01 13:30:00.0000000 0 NULL
2013-07-01 14:00:00.0000000 0 NULL
2013-07-01 14:00:00.0000000 0 NULL
2013-07-01 14:30:00.0000000 0 NULL
2013-07-01 14:30:00.0000000 0 NULL
我很难在不使用游标的情况下雄辩地找到开始和结束日期谢谢
初始表
CREATE TABLE Schedule([Day] DATE,[Time] TIME, IsBlocked bit, EndTime TIME);
insert into Schedule ([Day], [Time], IsBlocked, EndTime) values
('7/1/2013', '10:00:00', 0, null),
('7/1/2013', '11:00:00', 0, null),
('7/1/2013', '12:00:00', 1, '13:00:00'),
('7/1/2013', '13:00:00', 0, null),
('7/1/2013', '14:00:00', 0, null)