안녕하세요!
mssql에서 날짜 계산인데..
날짜 계산이야 걍~ fromDate에서 toDate를 dataDiff 인가? 로 빼주면 카운트 나오는건 알겠는데요..
문제는 이중간에 휴일(공휴일, 토요일, 일요일)이 있을때.. 그것을 무시하고 카운트를 세어야 하는데..
이론적으론 알겠는데.. 도데체 쿼리를 못만들겠네요.. ㅜ.ㅡ
많은 조언 부탁 드립니다..
감사합니다 ~
datename(dw, getdate()) 를 이용하면 요일을 가져올 수 있습니다.
따라서 아래와 같이 테스트를 해보시면 될 듯합니다.
다만 ,공휴일을 제외하고 싶으시다면 공휴일 정보가 어딘가에 저장되어 있어야 가능할 것으로 생각됩니다.
with t as ( select convert(datetime, '20100801', 121) dt union all select convert(datetime, '20100802', 121) union all select convert(datetime, '20100803', 121) union all select convert(datetime, '20100804', 121) union all select convert(datetime, '20100805', 121) union all select convert(datetime, '20100806', 121) union all select convert(datetime, '20100807', 121) union all select convert(datetime, '20100808', 121) union all select convert(datetime, '20100809', 121) union all select convert(datetime, '20100810', 121) ) select count(case when datename(dw, dt) not in ('토요일','일요일') then dt end) from t where datename(dw, dt) not in ('토요일','일요일')
知音 님
답변 너무나 감사합니다.~ ^^
아.. 그냥은 힘들군요.. 공휴일정보가 반드시 저장 되어야 되는거겠지요??
ㅜ.ㅡ
우선 고민좀 더 해보고 안돼면.. 님이 알려주신 방법대로.. 방향을 바꿔야 겠네요..
다시한번 감사의 말씀 드립니다..
남은 하루 수고하십시요~
공휴일을 넣자니.. 공휴일 관리가 들어가서 .. ㅡㅡ;;
그냥 빼기로 했구요.. 일요일만 빼고 카운트 하기로 했습니다..
알려주신 쿼리가 이해가 안대서. ㅡ.ㅜ
그냥 function을 만들엇습니다.
제가 만든거라.. 좀 머시기 하네요... 보완해야 할 부분이 있으면 댓글 달아 주시고..
간단한 쿼리로 나온다면... 알려주세요~ please ~~
감사합니다.
CREATE function dbo.fnDateCalcu(@fromDate varchar(8), @toDate varchar(8)) returns int as begin DECLARE @term int DECLARE @i int DECLARE @cnt int
set @term = datediff(d, @fromDate, @toDate) set @i = 0 set @cnt = 0
while @i < @term begin if datename(dw, dateadd(dd, @i, @fromDate)) != '일요일' begin set @cnt = @cnt + 1 end
set @i = @i + 1 end return @cnt end
쿼리만으로도 가능합니다..
select count(case when a.days not in ('일요일') then 1 end) from ( select dateadd(d, number, '2010-08-01') dt , datename(dw, dateadd(d, number, '2010-08-01')) days from master..spt_values where type = 'P' and number <= datediff(d, '2010-08-01', '2010-08-10') ) a