바다토리 웨어하우스
1년 전체 주말 등록하는 쿼리 스크립트 본문
반응형
근태관리 같은 업무를 개발하다 보면, 휴일 등록에 따른 근태를 관리해야 할 필요가 생긴다.
그런 경우, 휴일과 공휴일에 대한 정보를 별도의 DB로 관리를 주어야 하는데,
이럴 경우 1년 중 토요일과 일요일을 구분하여 휴일 처리해주고, 그 외 변동적인 공휴일은
관리자가 직접 수정하도록 해주면 된다.
declare @i int
set @i=0
while @i<=365
begin
insert into HOLIDAY(alwhday_dt,alwhday_yn)
select dateadd(d,@i,'2022-01-01'), 'N'
If datepart(dw,dateadd(d,@i,'2008-01-01'))=7 Or datepart(dw,dateadd(d,@i,'2008-01-01'))=1 --토요일과 일요일은 휴일처리
begin
update HOLIDAY
set alwhday_yn ='Y'
where alwhday_dt = dateadd(d,@i,'2022-01-01')
end
set @i=@i+1
end
365일 만큼 While문을 통하여 반복 처리하도록 하며, 기준 날짜(연초)를 중심으로 +1씩 더해가며,
해당 일자가 주말인지를 체크 후 주말에 해당되면 휴일구분자를 update 해주면 된다.
dateadd를 통하여, 1씩 더해가며, 날짜를 늘려주고, 내부에서는 datapart를 통하여, 계산된 날짜의
주말 구분을 해주면 된다.
보통 우리가 생각하는 순서는 월, 화, 수, 목, 금, 토, 일이지만, MSSQL에서 인식하는 요일의 순서는
일, 월, 화, 수, 목, 금, 토 순서가 되므로, 일요일을 datapart로 변환하면 1을 리턴하게 된다.
일(1), 월(2), 화(3), 수(4), 목(5), 금(6), 토(7) 이 되는 것이다.
이렇게 하면 1과 7 즉 토요일과 일요일은 주말로 등록이 가능하며, 나머지 휴일은 수동으로 업데이트를 하면 된다.
어떻게 보면 간단하지만, 떄론 필요할 때 요긴하게 사용할 수 있는 쿼리이다.
반응형
'IT > mssql' 카테고리의 다른 글
MSSQL administrator 계정을 삭제했을 때 해결방법 (0) | 2022.05.27 |
---|---|
DB복원 후 원래 계정으로 로그인이 안될때 방법 (0) | 2022.05.26 |
SQL에서 1024개 이상의 테이블 컬럼 만들기 (0) | 2022.05.23 |
MSSQL 중복없는 랜덤코드 생성하기 (0) | 2022.05.20 |
MSSQL을 이용한 JSON데이터 처리 방법 (0) | 2022.05.12 |
Comments