星期天的多个时间间隔-存储在数据库和处理中的最佳方法
本文关键字:数据库 处理 最佳 方法 时间 星期天 存储 | 更新日期: 2023-09-27 18:00:05
我正在做一个项目,我需要在一周中组合多个时间段来获得有效的时间段。
参见下面的示例
时间槽1=太阳,mon,tue,wed、thu和fri,坐09:00到17:00
时间槽2=太阳,mon,tue,wed、thu、fri
时间间隔不适用于bold中的天标记。
有效时隙=
Sun 18:00 to 23:00
Mon 09:00 to 17:00
Tue 09:00 to 17:00 and 18:00 to 23:00
Wed No access
Thu 18:00 to 23:00
Fri 09:00 to 17:00
Sat 09:00 to 17:00 and 18:00 to 23:00
如何将其存储在数据库中,使其易于理解和处理?
MS SQL 2008+的表结构
CREATE TABLE TimeSlots(
id INT identity(1, 1) PRIMARY KEY
,groupId int
);
CREATE TABLE TimeSlotItems(
id INT identity(1, 1) PRIMARY KEY
,slotid INT FOREIGN KEY REFERENCES TimeSlots(id)
,weekday VARCHAR(3)
,startTime TIME(0)
,endTime TIME(0)
);
-- 2 slots of group 10
INSERT INTO TimeSlots(groupId)
VALUES (10), (10);
INSERT INTO TimeSlotItems(slotid,weekday,startTime,endTime)
VALUES
(1, 'Sun', '09:00' ,'17:00')
,(1, 'Mon', '09:00' ,'17:00')
--...
,(2, 'Sun', '18:00' ,'23:00')
,(2, 'Mon', '18:00' ,'23:00')
;
SELECT s.groupId, i.*
FROM TimeSlotItems i
JOIN TimeSlots s ON s.Id=i.slotid;