2016-07-29 2 views
2

У меня есть небольшая проблема, которую я пытаюсь решить. Я работаю над функцией в VB6, используя SQL SERVER 2008 для хранения. Вот мой вопрос ....SQL SERVER 2008 Выберите оператор

Я ввожу данные для клиента, 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 

Так вот мой вопрос - у меня есть только 2 место открытое для этого TaskId. Поэтому, прежде чем я ввожу любой из этих записей я проверить счетчик, как это ...

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

В этом случае я бы получить количество 2. Однако моя проблема появляется, когда я кто-то пытается добавить еще записи на 7/29/2016 (мой от даты всегда сегодня), поэтому в этом случае система будет делать это ....

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

Но теперь он отображается как нет записей, так как FROMDATES в SQL SERVER являются все до 7/29/2016 (как видно из моих табличных данных). Но я хочу убедиться, что, когда я вхожу в клиент для FROMdate = 7/29/2016, нет идентификатора ClientID между FromDate и ToDate. Так что, в основном, если я попытаюсь добавить клиента сегодня на 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. И для 8/5/2016 - нет записей, потому что это не промежуточный период и дата. – BobSki

+0

@ gofr1 Я только пытаюсь показать записи, где введенная дата находится между fromDate и toDate – BobSki

ответ

2

Вы можете использовать этот запрос, чтобы показать все записи, в которых введен Date находится между FromDate и ToDate (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 больше сегодняшней даты и вернет две записи.

Смежные вопросы