제목이 조금 이상하죠.
입력 : 일자
출력 : 그일자가 속한 주의 시작일과 마지막일
입력된 일자로 속한 주의 통계를 뽑아야 할 일이 있었습니다.
좀더 간단한 방법도 있을 듯 한데.
//-----------------------------------------------------------------
조건값: 오늘의 마지막 날짜
select
datepart(dd,dateadd(dd,-datepart(dd,dateadd(mm,1,getdate())),dateadd(mm,1,getdate())))
//-----------------------------------------------------------------
create function WeekStartTemp(@date datetime) returns int
as
begin
declare @ans int
if (datepart(dd,@date) - datepart(weekday,@date) +1) < 0
begin
set @ans=1
end
else
begin
set @ans=datepart(dd,@date) - datepart(weekday,@date) +1
end
return @ans
end
Go
create function WeekEndTemp(@date datetime) returns int
as
begin
declare @tmp int,@LastDay int,@ans int
set @LastDay= datepart(dd,dateadd(dd,-datepart(dd,dateadd(mm,1,@date)),dateadd(mm,1,@date)))
set @tmp= datepart(dd,@date) +(7-datepart(weekday,@date) )
if @tmp > @LastDay
begin
set @ans=@LastDay
end
else
begin
set @ans=@tmp
end
return @ans
end
//-----------------------------------------------------------------
테스트
select dbo.WeekStartTemp(getdate()),dbo.WeekEndTemp(getdate())
|