2012-02-22 4 views
1

Я создаю веб-приложение, которое покажет предстоящие дни рождения списка людей, хранящихся в DB SQL Server 2008. Я не могу понять, как запросить все записи в БД, которые находятся в течение 30 дней с сегодняшней даты.Даты запроса от SQLServer в C#?

Вот что я до сих пор:.

using (HumanResourcesDB db = newH umanResourcesDB(ConfigurationManager.ConnectionStrings["HumanResourcesDB"].ConnectionString)) 
      { 
       DateTime todaysDate = DateTime.Now; 

       List<Employee> record = 
       (from tab in db.Employees 
       where tab.Birthday between DateTime.Now and todaysDate.AddDays(30) 
       select tab).ToList(); 
       this.grdBirthdays.DataSource = record; 
       this.grdBirthdays.DataBind(); 
      } 

конечно «между» и «и» не работают, что это то, что мне нужно заполнены я искал в сети на некоторое время, чтобы нет. Любая помощь?

ответ

4

Просто использовать больше и меньше, чем

using (HumanResourcesDB db = newHumanResourcesDB(ConfigurationManager 
      .ConnectionStrings["HumanResourcesDB"].ConnectionString)) 
{ 
    List<Employee> record = (from tab in db.Employees 
    where tab.Birthday >= DateTime.Today 
    && tab.Birthday < DateTime.Today.AddDays(31) 
    select tab).ToList(); 

    this.grdBirthdays.DataSource = record; 

    this.grdBirthdays.DataBind(); 
} 

Кроме того, я должен отметить, что я использовал DateTime.Today, а не DateTime.Now, потому что сегодня представляет собой начало дня, как 00: 00: 00.000. Если кто-то день рождения установлен на то, что сегодня на 00: 00: 00.000, и вы использовали DateTime.Now (предположим, что это 8:00 утра). День рождения не будет включен в этот диапазон, потому что он считается до «сейчас».

+1

Тогда вы понимаете, что конец диапазона должен быть '

+0

Я пробовал это раньше, он дает несколько ошибок. «Тип или имя пространства имен« AND »не удалось найти« »Локальная переменная с именем« вкладка »не может быть объявлена ​​в этой области, поскольку она придавала бы значение« tab », которое уже используется в« дочернем » 'scope, чтобы обозначить что-то еще " – broguyman

+0

@AaronBertrand это правда, обновлено. –

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