MS-SQL 쿼리를 이용하여 문자열을 배열로 전환하기
MS-SQL(시퀄) 서버에서 저장 프로시저(Stored Procedure; SP)를 사용하다 보면 흔히 접하는 문제들 중 하나이다. 표준 시퀄 쿼리는 배열을 지원하지 않기 때문에 여러가지 꼼수들을 사용해서 문자열을 배열로 변환시키곤 하는데, 아래 소개할 방법도 그런 것들 중 하나이다. 시퀄 서버 2005 버전부터 PATINDEX()1라는 함수를 새롭게 도입했다. 와일드카드(%)를 이용해서 문자열의 위치를 찾아내는 함수인데, 이를 이용하면 손쉽게 문자열을 잘라서 배열 형태의 테이블로 저장할 수 있게 된다. 아래 스크립트를 보자. DECLARE @items NVARCHAR(MAX) SET @items = '111,222,333,444,555,666,777,888,999' DECLARE @delimit..
2022. 12. 6.
어제, 오늘 , 내일 날짜
DECLARE @yesterday char(10) = convert(varchar(10),dateadd(d,-1,GETDATE()),121) DECLARE @tomorrow char(10) = convert(varchar(10),dateadd(d,+1,GETDATE()),121)
2022. 12. 6.
날짜계산함수 datediff, dateadd 등
dateadd -- 월의 마지막 날 select dateadd(month,1,getdate())-day(getdate()) -- 월의 첫째날 select dateadd(day,-(day(getdate()-1)), getdate()) -- 월의 13개월전 첫째날 select dateadd(month,-12,getdate())-(day(getdate())-1) -- 1일 더하기 select dateadd(day,1,getdate()) -- 1월 더하기 select dateadd(month,1,getdate()) -- 1년 더하기 select dateadd(year,1,getdate()) datediff datediff( 시간단위구분자, 시작시간, 종료시간 ) getdate()+1 은 현재시간에서 ..
2022. 12. 6.