??? ??? ??????? ??? ???.?
select DATEADD(wk, DATEDIFF(wk,0,getdate()), 0)
? ?? ?? ???? ????? ??? ?? ?? ?? ??? ? ?? ? ???.
? > 2005?? 25?? ?? ???
??? ??? ??????.
?? ????.
이전에 본 적이 있는 질문인 것 같기도 한데..
지금 질문하신 글자가 깨져서 전혀 읽을 수가 없네요..
아침에 출근해서 머리도 식힐 겸 해서 읽을 수 없는 이 문제를 제목을 바탕으로 해서 프로시저로 만들어 봤습니다..
그럼..
< 이하 샘플 >
-- 이하 프로시저create procedure usp_get_day_by_given_week( @first_weekday varchar(10) = 'sunday', @yyyy char(4) = null, @idx_week smallint = null)as
declare @stdt datetimedeclare @idxdt datetimedeclare @first_wd smallint
set @first_wd = (case lower(@first_weekday) when 'monday' then 1 when 'tuesday' then 2 when 'wednesday' then 3 when 'thursday' then 4 when 'friday' then 5 when 'saturday' then 6 when 'sunday' then 7 end)set datefirst @first_wd
if @yyyy is null set @yyyy = datepart(year, getdate())if @idx_week is null set @idx_week = datepart(week, getdate())
if (@idx_week < 1 or @idx_week > 53) begin print 'input value is invalid.. @idx_week must be in (1~53)' return(0) end
set @stdt = @yyyy + '/01/01'set @idxdt = dateadd(week, @idx_week - 1, @stdt)select dateadd(day, -(datepart(weekday, @idxdt) - 1), @idxdt)go
-- 이하 실행 예
exec usp_get_day_by_given_weekexec usp_get_day_by_given_week 'monday'exec usp_get_day_by_given_week 'monday', '2005', 25exec usp_get_day_by_given_week @yyyy = '2005', @idx_week = 25go
-- 샘플 해제
drop procedure usp_get_day_by_given_weekgo
parameter 설명이 전혀 없네요.. -_-;;
죄송..
@first_weekday : default로 일요일이 주의 시작일입니다만, 지정할 수 있습니다.. 예를 들면, monday라든지..
@yyyy : 원하는 년도를 입력합니다.. default로는 내부적으로 현재일자를 기준으로 년도를 산출합니다..
@idx_week : 원하는 주(1~53)를 입력합니다.. default로는 현재 일자가 포함된 주를 산출합니다..