2016-07-29 3 views
2

해결할 문제가 있습니다. 저장소에 SQL Server 2008을 사용하는 VB6의 함수 작업 중입니다. 여기에 내 문제는 ....SQL Server 2008 Select 문

클라이언트, ClientID, ClientTask, TaskID, FromDate, ToDate에 대한 데이터를 tblClientInformation에 입력합니다.

그래서 내가 같은 클라이언트 데이터를 입력 가정 해 봅시다 :

ClientID ClientTask TaskID FromDate ToDate 
177  Acct  21  7/28/2016 8/3/2016 
179  Acct  21  7/28/2016 8/4/2016 

그래서 여기 내 문제입니다 -이 TaskID를 오픈에서만 두 자리 수 있습니다. 나는 누군가가 다른 레코드를 추가 할 때 그래서이 경우에 나는이 같은 수를 확인 이러한 기록 중 하나 ...

Select ClientID from tblClientInformation where taskID=21 and FromDate>='7/28/2016' 

를 입력하기 전에 그러나 2의 수를 얻을 것 내 문제는 온다 2016년 7월 29일에 (내 날짜는 항상 오늘부터)이 경우에 시스템은 SQL Server의 FROMDATES이기 때문에 지금은, 아니 레코드로 보여주는 것 ....

Select clientId from tblClientinformation where taskID=21 and FromDate>='7/29/2016' 

을 이렇게 그러나 것 2011 년 7 월 29 일 이전에 (내 표 데이터에서 볼 수 있듯이) 그러나 FROMdate = 7/29/2016에 클라이언트를 입력 할 때 FromDate와 ToDate 사이에 ClientID가 없는지 확인하려고합니다. 기본적으로 오늘 7/29/2016에 클라이언트를 추가하려고 시도하면 기본적으로 FromDate와 ToDate 사이에 7/29/2016 이후 2 개의 clientID가 표시됩니다.

Date를 입력 한 경우 당신은 모든 레코드를 표시하려면이 쿼리를 사용할 수 있습니다
+1

예를 들어이 경우'ToDate' 필드의 두 번째 행에만있는'8/4/2016 '날짜의 행을 추가합니까? 이 경우 1 개의 레코드 만 표시해야합니까? 날짜가'8/5/2016'- 기록이 없다면? – gofr1

+0

2011 년 8 월 4 일을 추가하면 FromDate와 Todate 사이에 하나의 입력란 만 표시됩니다. 그리고 2011 년 8 월 5 일에는 레코드가 없습니다. 왜냐하면 레코드가 오래되고 안쪽에 있지 않기 때문입니다. – BobSki

+0

@ gofr1 입력 한 날짜가 fromDate와 toDate 사이 인 레코드 만 표시하려고합니다. – BobSki

답변

2

FromDateToDate (literaly) 사이 :

DECLARE @DateToCheck date = '8/4/2016' 

SELECT FieldsYouNeed 
FROM tblClientinformation 
WHERE taskID=21 and @DateToCheck between FromDate and ToDate 
1

가 왜이 경우

SELECT clientId 
FROM tblClientinformation 
WHERE taskID=21 
    AND FromDate <='7/29/2016' 
    AND ToDate >= '7/29/2016'; 

을 사용할 수 없습니다 7/28 날짜는 오늘 날짜보다 작으며 8/31의 시작 날짜는 오늘 날짜보다 커서 두 개의 레코드를 반환합니다.