- 임시 테이블 @tbl_date 를 생성후, (컬럼, test_id, start_dttm, end_dttm 생성)
@tbl_date에 TB_TEST 테이터를 insert
DECLARE @tbl_date table (TEST_ID VARCHAR(50), start_dttm DATETIME, end_dttm DATETIME);
INSERT INTO @tbl_date
SELECT TEST_ID, START_DTTM, END_DTTM FROM TB_TEST WHERE WORK_SHOP_ID = @V_WORK_SHOP_ID
- 변수를 @S @E 선언후 비교할 데이터를 insert
DECLARE @S DATETIME;
DECLARE @E DATETIME;
SET @S = @V_START_DTTM
SET @E = @V_END_DTTM
[참고: @V_START_DTTM,@V_END_DTTM 는 비교하고 싶은 데이터를 받은 변수]
- @DATE_CHECK 를 선언하고 @tbl_date 테이블에 들어있는 날짜 들과 비교해서 날짜가 겹치는 데이터를 count 한다.
@DATE_CHECK 를 조회해보면 테이블에서 지정한 날짜가 겹치는 데이터 ROW 수가 출력된다.
DECLARE @DATE_CHECK TINYINT;
SET @DATE_CHECK =(
SELECT COUNT(*) FROM @tbl_date
WHERE
(
(
(@S BETWEEN start_dttm AND end_dttm)
OR
(@E BETWEEN start_dttm AND end_dttm)
)
OR
(
(start_dttm BETWEEN @S AND @E)
OR
(end_dttm BETWEEN @S AND @E)
)
));
풀 SQL
DECLARE @tbl_date table (TEST_ID VARCHAR(50), start_dttm DATETIME, end_dttm DATETIME);
INSERT INTO @tbl_date
SELECT TEST_ID, START_DTTM, END_DTTM FROM TB_TEST WHERE WORK_SHOP_ID = @V_WORK_SHOP_ID
DECLARE @S DATETIME;
DECLARE @E DATETIME;
SET @S = @V_START_DTTM
SET @E = @V_END_DTTM
DECLARE @DATE_CHECK TINYINT;
SET @DATE_CHECK =(
SELECT COUNT(*) FROM @tbl_date
WHERE
(
(
(@S BETWEEN start_dttm AND end_dttm)
OR
(@E BETWEEN start_dttm AND end_dttm)
)
OR
(
(start_dttm BETWEEN @S AND @E)
OR
(end_dttm BETWEEN @S AND @E)
)
));
[참고: 날짜가 같은 것까지 겹치는 것은 겹치는 것으로 간주 하지 않을때는 BETWEEN 대신 밑의 SQL로 계산한다.]
DECLARE @tbl_date table (TEST_ID VARCHAR(50), start_dttm DATETIME, end_dttm DATETIME);
INSERT INTO @tbl_date
SELECT TEST_ID, START_DTTM, END_DTTM FROM TB_TEST WHERE WORK_SHOP_ID = @V_WORK_SHOP_ID
DECLARE @S DATETIME;
DECLARE @E DATETIME;
SET @S = @V_START_DTTM
SET @E = @V_END_DTTM
DECLARE @DATE_CHECK TINYINT;
SET @DATE_CHECK =(
SELECT COUNT(*) FROM @tbl_date
WHERE
(
(
(@S > start_dttm AND @S < end_dttm)
OR
(@E > start_dttm AND @E < end_dttm)
)
OR
(
(start_dttm > @S AND start_dttm < @E)
OR
(end_dttm > @S AND end_dttm< @E)
)
));
'SQL > MS-SQL & SQL Server Management Studio' 카테고리의 다른 글
[MS-SQL] 락(LOCK)걸린 쿼리, (조회/해제 (0) | 2019.08.22 |
---|---|
[MS-SQL] NUMERIC 소수점 설정/ 자르기. (0) | 2019.08.22 |
ms sql 관리자 계정 (sa) 활성화 하기 (2) | 2019.04.25 |
ms sql 설치 후 데이터베이스 엔진 연결 문제 (0) | 2019.04.25 |
MS-SQL 날짜 변환 (0) | 2019.04.11 |
댓글