2014-09-09 2 views
0

입력을 'jun - may'으로 지정합니다.SQL을 사용하여 회계 연도 마지막 날을 가져 오는 방법

은 현재 연도와 월 확인 중 : 현재 월 9 월이면

  1. 은 (9)와 현재 연도 2014 년이며, 다음 회계 연도가 June 2014 - May 2015로 설정됩니다.
  2. 현재 월이 JANUARY (1)이고 현재 연도가 2014 인 경우 회계 연도는 Jun 2013 - May 2014으로 설정됩니다.

회계 연도 내에 매월 마지막 날짜를 찾아야합니다.

나는 한 달의 마지막 날짜를 얻기위한 해결책을 찾았지만 논리에 따라 범위 내의 모든 달을 찾기 위해 그것을 확장하는 방법을 모른다.

내 지금까지 시도 :

DECLARE @Month int 
DECLARE @Year int 

set @Month = 2 
set @Year = 2004 

select DATEADD(day,-1,DATEADD(month,@Month,DATEADD(year,@Year-1900,0))) 
+0

를 시도 할 수, 현재의 달 December' 6 월'사이 인 경우 ** 2014 ** 다음 회계 연도가'라고 2014 년 6 월 ~ 2015 년 '. 그러나 이번 달이'1 월 ~ 5 월 '사이에 ** 2014 **라고 다시 말하면, 회계 연도는'2013 년 6 월 ~ 2014 년 5 월 '입니까? 그 맞습니까? – Edper

+0

Xcatly 당신은 의식입니다 !!!! –

+0

그렇다면 출력이 어떻게 달라야합니까? 그리고 추출 된 범위를 어떤 값으로 비교해야합니까? 2014 년 6 월에서 2015 년 5 월까지 가치 (또는 필드)를 비교해야한다고 가정 해 봅시다. 또는 2014 년 6 월, 2014 년 7 월, 2014 년 8 월에서 2015 년 5 월까지의 값을 테이블에 넣어야합니까? – Edper

답변

1

당신이 그래서

DECLARE @Month int =5 
DECLARE @Year int = 2004 
declare @i int = 0 
if @Month between 1 and 5 set @i = 1 else set @i = 0 
create table #temp(Monthend datetime) 

set @Month = 6 
while(@month<=12) 
begin 
insert into #temp 
select DATEADD(day,-1,DATEADD(month,@Month,DATEADD(year,@[email protected],0))) 
set @month = @month+1 
end 

set @Month = 1 
while(@month<6) 
begin 
insert into #temp 
select DATEADD(day,-1,DATEADD(month,@Month,DATEADD(year,@[email protected],0))) 
set @month = @month+1 
end 

Select * from #temp 
Drop table #temp 
+0

전설 감사드립니다. 나는 +10을 줄 수 없으므로 +1을주었습니다. –

관련 문제