SQL Server数据库
2张表
表A
3个字段 NAME 类型为VARCHAR,START_TIME和STOP_TIME类型都为TIME
NAME | START_TIME | STOP_TIME
A | 08:00 | 16:00
B | 16:00 | 00:00
C | 00:00 | 08:00
表B
2个字段 NAME 类型为VARCHAR, CREATION_TIME 类型为DATETIME
NAME | CREATION_TIME
test | 2016-08-24 10:19:26.217
test2 | 2016-08-25 17:28:27.105
test3 | 2016-08-25 18:21:17.216
test4 | 2016-08-26 07:05:10.056
现在要求做一张视图, 查询表B的NAME 字段和 表A的 NAME 字段, 但是 关联信息是 表B 的CREATION_TIME 字段 在表A 的 START_TIME和STOP_TIME范围内 根据范围不同 查询不同的 A.NAME
查询结果应为:
B.NAME | A.NAME
test | A
test2 | B
test3 | B
test4 | C
2张表
表A
3个字段 NAME 类型为VARCHAR,START_TIME和STOP_TIME类型都为TIME
NAME | START_TIME | STOP_TIME
A | 08:00 | 16:00
B | 16:00 | 00:00
C | 00:00 | 08:00
表B
2个字段 NAME 类型为VARCHAR, CREATION_TIME 类型为DATETIME
NAME | CREATION_TIME
test | 2016-08-24 10:19:26.217
test2 | 2016-08-25 17:28:27.105
test3 | 2016-08-25 18:21:17.216
test4 | 2016-08-26 07:05:10.056
现在要求做一张视图, 查询表B的NAME 字段和 表A的 NAME 字段, 但是 关联信息是 表B 的CREATION_TIME 字段 在表A 的 START_TIME和STOP_TIME范围内 根据范围不同 查询不同的 A.NAME
查询结果应为:
B.NAME | A.NAME
test | A
test2 | B
test3 | B
test4 | C
解决方案
40
select B.Name,A.Name from 表A A, (select Name, convert(char(8),creation_time,108) as createTime from 表B) B where B.createTime between convert(char(8),A.Start_Time,108) and convert(char(8),A.Stop_Time,108)
这样子行吗?不过你的StopTIme有比StartTime小的,这样子的表真的没问题吗?00点与24点可是不一样啊