Как вставить запись с проверкой даты - PullRequest
0 голосов
/ 04 января 2012

Таблица1

ID  Month   datefrom   dateto     reason

001 12/2011 01/12/2011 10/12/2011 Leave
001 12/2011 18/12/2011 25/12/2011 Holiday
.....

дата от даты, тип даты до datetime, дата от даты и формат даты до (dd/mm/yyyy)

Перед вставкой даты от даты, чтобы проверить,соответствие с datefrom и dateto из таблицы

Пробный запрос (перед вставкой я проверяю, совпадает ли дата ввода пользователя с таблицей)

SELECT * FROM table1 
WHERE (Month = '01/2012') AND 
      (id = '001') and 
      Convert(Datetime, '01/12/2011', 103)  between datefrom and dateto or 
      Convert(Datetime, '10/12/2011', 103)  between datefrom and dateto

Приведенный выше запрос работает, если выбратьС 01.12.2011 по 12.12.2011, если я выбрал дату с 31.11.2011 по 12.12.2011, это означает, что он позволяет вставить ...

Как изменить мой запрос....

Требуется справка

1 Ответ

1 голос
/ 04 января 2012

Это очень (очень) дикое предположение.Вы пытаетесь ввести INSERT в таблицу, но не хотите, чтобы интервалы [datefrom, dateto] пересекались с любым существующим интервалом в таблице?

Если да, вы можете сделать это:

INSERT INTO table1
  (datefrom, dateto)
SELECT @DateFromNewValue, @DateToNewValue
WHERE NOT EXISTS
      ( SELECT *
        FROM table1
        WHERE datefrom <= @DateToNewValue
          AND @DateFromNewValue <= dateto
      )

и имеют любой @DateNewValue в 'yyyy-mm-dd' формате.

...