SQL Server安装程序:
CREATE TABLE Time
(
Time NCHAR(8),
TimeOrder INT,
)
CREATE TABLE Event
(
StartTime NCHAR(8),
EndTime NCHAR(8),
)
INSERT INTO Time(Time, TimeOrder)
VALUES ('09:00 AM',1)
,('09:30 AM',2)
,('10:00 AM',3)
,('10:30 AM',4)
,('11:00 AM',5)
,('11:30 AM',6)
,('12:00 PM',7)
,('12:30 PM',8)
,('01:00 PM',9)
,('01:30 PM',10)
,('02:00 PM',11)
,('02:30 PM',12)
,('03:00 PM',13)
,('03:30 PM',14)
,('04:00 PM',15)
,('04:30 PM',16)
,('05:00 PM',17)
,('05:30 PM',18)
,('06:00 PM',19)
,('06:30 PM',20)
,('07:00 PM',21)
,('07:30 PM',22)
INSERT INTO Event(StartTime, EndTime)
VALUES ('09:30 AM','11:00 AM')
,('11:30 AM','4:00 PM')
我希望能够从Time
表中选择Event
StartTime
和EndTime
之间的所有时间段。我尝试过一些事情,但我不确定该去哪儿?
预期的查询结果:
| Time | TimeOrder |
|----------|-----------|
| 09:30 AM | 2 |
| 10:00 AM | 3 |
| 10:30 AM | 4 |
| 11:00 AM | 5 |
| 11:30 AM | 6 |
| 12:00 PM | 7 |
| 12:30 PM | 8 |
| 01:00 PM | 9 |
| 01:30 PM | 10 |
| 02:00 PM | 11 |
| 02:30 PM | 12 |
| 03:00 PM | 13 |
| 03:30 PM | 14 |
| 04:00 PM | 15 |
非常感谢任何帮助。谢谢!
答案 0 :(得分:3)
如果我理解你的问题,你应该可以通过加入来做到这一点:
SELECT t.Time
FROM Time t join
Event e on CONVERT(time, t.time) >= CONVERT(time, e.startTime) and
CONVERT(time, t.time) <= CONVERT(time, e.EndTime)
将时间存储为时间数据类型而不是nchar(8)可能是有意义的,因此不需要CONVERT。