SQL SERVER 2008 Select语句

问题描述:

我有一个小问题,我试图解决。我正在VB6中使用SQL SERVER 2008进行存储。这是我的问题....SQL SERVER 2008 Select语句

我在tblClientInformation中为客户端,ClientID,ClientTask,TaskID,FromDate,ToDate输入数据。

所以我们可以说我输入客户数据,例如:

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

因此,这里是我的问题 - 我只有2点开这个的TaskID。所以,在我进入的这些记录我检查这样的计数的任何一个......

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

在这种情况下,我会得到的。然而计数我的问题来了,当我有人试图添加另一个记录在2016年7月29日(我从日期始终今天),所以在这种情况下,系统会做到这一点....

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

但现在它的显示为没有记录,因为在SQL Server中FROMDATES是全部在2016年7月29日前完成(可以在我的表格数据中看到)。但是我想确保当我进入FROMdate = 7/29/2016的客户端时,FromDate和ToDate之间没有ClientID。所以基本上,如果我今天尝试在7/29/2016添加客户端 - 它应该显示2个clientID,因为7/29/2016位于FromDate和ToDate之间。

+1

例如在这种情况下,我添加了日期为'8/4/2016'的行,它仅在'ToDate'字段的第二行?在这种情况下它应该只显示1条记录吗?如果日期是“8/5/2016” - 没有记录? – gofr1

+0

如果添加8/4/2016,那么它应该只显示一个字段,因为它介于FromDate和Todate之间。而对于2016年5月8日 - 没有记录,因为它不在indate和todate之间。 – BobSki

+0

@ gofr1我只是试图显示记录输入日期在fromDate和toDate之间 – BobSki

您可以使用此查询显示所有记录,其中进入Date之间的FromDateToDate(literaly):

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

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

为什么你不能使用

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

在这种情况下,从7/28日起小于今天的日期,并且8/31的日期大于今天的日期并将返回两个记录。