У меня есть система управления событиями, в которой я хочу,
Если мероприятие зарегистрировано на 5 дней (с 21 января 2009 г. по 26 января 2009 г.), тогда, если другой человек хочет зарегистрировать мероприятие в период с 22 января 2009 г. по 24 января 2009 г., он не позволит зарегистрироваться. Я хочу проверить это с помощью SQL-запроса, поэтому скажите, как я могу это сделать.


ВЫБРАТЬ *
ИЗ событий e
ГДЕ (@startDate МЕЖДУ e.startDate и e.endDate)
ИЛИ (@endDate МЕЖДУ e.startDate и e.endDate)
ИЛИ (@startDate <e.startDate И @endDate> e.endDate)
Найдите DATEDIFF в справке SQL.
Просто чтобы дополнить другие ответы, у вас есть хорошая статья о Как искать значения даты и времени с помощью SQL Server 2000
Он напоминает вам о том, как хранятся значения даты / времени (два типа данных даты / времени: datetime и smalldatetime)
Это также указывает на то, что Datetime и smalldatetime похожи на типы данных с плавающей запятой, float и real, в том смысле, что они являются приблизительными числами. Это означает, что значение, полученное из SQL Server, может отличаться от значения, которое было изначально сохранено.
Кроме того, он предупреждает о проектировщиках баз данных, которые не всегда правильно используют столбцы даты и времени. Во время разработки базы данных каждый столбец даты / времени должен быть идентифицирован с указанием, будет ли он хранить дату и время, только даты или только время.
Он закрывается с помощью практические вопросы по данным / времени.
У вас также есть хорошее описание DATEADD и DATEDIFF здесь.