2016-06-14 2 views
-1

의 사이에 나는 @StartDate 그리고 @enddate 사이하는 STARTDATE 및 ENDDATE 묻는 SQL 쿼리가 있습니다. 하지만 내가 뭘하려고 동일한 쿼리가 자동으로 현재의 달 전진 3 단 개월 DATEADD/GETDATE 코드를 사용해,이 있지만 두 가지를 통합하는 방법을 알아낼 수 없습니다입니까?DATEADD은 및 SQL 쿼리

+3

는 예를 들어, 데이터를 추가하고이입니다 RDBMS 출력 –

+2

을 기대하세요? 태그를 추가하여 mysql, postgresql, sql-server, oracle 또는 db2 중 어느 것을 사용하는지 지정하십시오. –

+0

저희 회사는 웹 기반 도구 인 Access와 비슷하게 보이며 SQL을 작성하고 맨 아래에 유효성을 검사합니다. 여기에 내가 이야기하고 샘플입니다 : ENDDATE 그리고와 vwS_Co.S_CoStatus이 = '고객'과 vwS_Co.S_CoType = '자동차'*** 쿼리 회담 "에서"어디 vwS_CoPrimPolicy.S_PrimPolicyExpDT을 사이 STARTDATE "에서"*** 그리고 우리 Siebel DB. 출력은 10 월에 7 월에 기록 된 레코드 목록이므로 10/1/16 - 10/31/16입니다. 이것은 매월 달리고, 항상 90 일 앞을 내다 본다. –

답변

0
당신이 GETDATE()Why is the GETDATE() an invalid identifier를 기반으로 오라클

DATEADD(MONTH,3,GETDATE()) 

DATEADD()를 참조하고 있기 때문에 가정 SQL 서버에서

, 귀하의 의견을 바탕으로

ADD_MONTHS(SYSDATE,3) 

Equivalent function for DATEADD() in Oracle 시벨가있는 경우 SQL 서버는 필요

Where vwS_CoPrimPolicy.S_PrimPolicyExpDT Between @startdate And @enddate And vwS_Co.S_CoStatus = 'Customer' And vwS_Co.S_CoType = 'Automotive 

당신이 실제로 월말에 달의 시작을 오늘로부터 3 개월을 오늘로부터 3 개월을 찾고 있기 때문에

where vwS_CoPrimPolicy.S_PrimPolicyExpDT Between 

DATEFROMPARTS(YEAR(DATEADD(MONTH,3,GETDATE())),MONTH(DATEADD(MONTH,3,GETDATE())),1) 
    AND DATEADD(DAY,-1,DATEFROMPARTS(YEAR(DATEADD(MONTH,4,GETDATE())),MONTH(DATEADD(MONTH,4,GETDATE())),1)) 

And vwS_Co.S_CoStatus = 'Customer' And vwS_Co.S_CoType = 'Automotive 

조금 그 분해가되는 그 달 28,29 일 수 있었다 , 당신은 실제로 3개월 앞서 날짜를 찾을 필요가 긴 (30), 또는 제 31 일 다음 달 DATEFROMPARTS()의 시작이 유용하다 얻는다. 그런 다음 달 말에 날짜를 찾아 4 개월 후 다시 하루.