2016-07-29 32 views
2

Ich habe ein kleines Problem, das ich versuche zu lösen. Ich arbeite an einer Funktion in VB6, SQL Server 2008 für Speicher verwenden. Hier ist mein Problem ....SQL SERVER 2008 Select-Anweisung

Ich gebe Daten für einen Client, ClientID, ClientTask, TaskID, FromDate, ToDate in tblClientInformation.

Also lassen Sie uns sagen, dass ich Client-Daten als solche eingeben:

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

Also hier ist mein Problem - ich habe nur 2 Stelle offen für diese TaskId. Also, bevor ich einen dieser Datensätze eingeben prüfe ich die Zählung so ...

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

In diesem Fall habe ich eine Anzahl von 2. bekäme aber mein Problem kommt, wenn ich jemand anderen Datensätze hinzuzufügen versucht auf 2016.07.29 (mein ab Datum ist immer heute) so in diesem Fall würde das System dies tun ....

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

Aber jetzt ist es da keine Aufzeichnungen zeigt sich, da die FROMDATES in SQL Server alle vor dem 29.07.2016 (wie in meinen Tabellendaten ersichtlich). Aber ich möchte sicherstellen, dass, wenn ich einen Client für FROMdate = 7/29/2016, gibt es keine ClientIDs zwischen FromDate und ToDate. Also im Grunde, wenn ich versuche, einen Kunden heute am 29.07.2016 hinzuzufügen - sollte es mir 2 ClientIDs zeigen, da sich der 29.07.2016 zwischen FromDate und ToDate befindet.

+1

Zum Beispiel in diesem Fall füge ich Zeile mit dem Datum '8/4/2016' hinzu, das ist nur in der zweiten Reihe in' ToDate' Feld? Sollte es in diesem Fall nur 1 Rekord zeigen? Wenn das Datum "8/5/2016" ist - keine Aufzeichnungen? – gofr1

+0

Wenn Sie 8/4/2016 hinzufügen, sollte es nur ein Feld anzeigen, da es zwischen FromDate und Todate liegt. Und für 8/5/2016 - keine Aufzeichnungen, weil es nicht zwischen dem fromdate und todate ist. – BobSki

+0

@ gofr1 Ich versuche nur Datensätze anzuzeigen, wo eingegeben wird Datum ist zwischen dem fromDate und toDate – BobSki

Antwort

2

Sie diese Abfrage verwenden können, um alle Datensätze zu zeigen, wo Date eingegeben ist zwischen dem FromDate und ToDate (literaly):

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

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

Warum können Sie in diesem Fall benutzen nicht

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

die ab Datum vom 28.07. ist weniger als das heutige Datum, und das Datum von 8/31 ist größer als das heutige Datum und wird die zwei Aufzeichnungen zurückgeben.