22,302
社区成员




CREATE TABLE #A (
NAME VARCHAR(5),
BEGINHH INT,
ENDHH INT,
BEGINMM INT,
ENDMM INT
)
CREATE TABLE #B (
ORDERID VARCHAR(30)
)
INSERT INTO #A VALUES ('A',21,10,0,20)
INSERT INTO #A VALUES ('B',21,10,20,40)
INSERT INTO #B VALUES ('TS202105192331201111')
SELECT * FROM #B B LEFT JOIN #A A ON
(
--跨天,HH>开始HH OR HH<结束HH
(A.BEGINHH>A.ENDHH AND
A.BEGINHH<CAST(SUBSTRING(B.ORDERID,11,2) AS INT) OR (A.ENDHH>CAST(SUBSTRING(B.ORDERID,11,2) AS INT)))
OR
--不跨天,HH>开始HH AND HH<结束HH
(A.BEGINHH<A.ENDHH AND
A.BEGINHH<CAST(SUBSTRING(B.ORDERID,11,2) AS INT) AND (A.ENDHH>CAST(SUBSTRING(B.ORDERID,11,2) AS INT)))
)
--跨不跨天都要 MM>开始MM AND MM<结束MM
AND A.BEGINMM<CAST(SUBSTRING(B.ORDERID,13,2) AS INT) AND A.ENDMM>CAST(SUBSTRING(B.ORDERID,13,2) AS INT)
DROP TABLE #A,#B
≥和≤