WorkaHolic/MSSQL

MSSQL 특정 날짜를 알려주면 지난 주 요일을 알려주는 스크립트

2010. 4. 8. 22:32
반응형

저자: DatabaseJournal

 

이 SQL 스크립트는 SQL 서버 2000 혹은 7.0에서 작동한다. 어떤 날짜를 알려주면 그 날짜의 전 주 금요일을 반환해 주는 스크립트이다. 이 스크립트는 통계 분석 혹은 데이터 비교를 위해 해당 날짜의 전 주 어떤 요일 값을 가지고 오고 싶을 때 사용하면 유용하다.

다음은 함수로 만든 SQL 스크립트이다.

--Queried in Function
Create function dbo.getfri (@day datetime)
returns datetime
as
begin
declare @output datetime
if datepart(dw,@day) <> 7
set @output = dateadd(d,(-1)*(datepart(dw,@day)+1),@day)
else
set @output = dateadd(d,-1,@day)
return @output
end

위 함수를 이용하여 Schedule이란 테이블에서 date1과 date2 칼럼을 가지고 오는 사용법은 다음과 같다.

select dbo.getfri(date1),dbo.getfri(date2) from Schedule

또 다른 예를 하나 더 들면, 위 함수를 이용하여 select 문에서 직접 사용하려면 다음과 같다.

select dbo.getfri(getdate())
select dbo.getfri('5/11/2003')

위 함수를 프로시져로 작성하면 다음과 같다.

--Queried as procedure
create procedure getfriday @day datetime
as
declare @output datetime
if datepart(dw,@day) <> 7
set @output = dateadd(d,(-1)*(datepart(dw,@day)+1),@day)
else
set @output = dateadd(d,-1,@day)
select @output

위 프로시져를 이용하는 방법은 다음과 같다.

exec getfriday '2/3/2003'


반응형