2012-02-22 30 views
1

我正在構建一個即將顯示存儲在SQL Server 2008數據庫中的人員列表即將到來的生日的Web應用程序。我無法弄清楚如何查詢數據庫中所有在今天日期30天內的記錄。從C#中的SQLServer查詢日期?

這裏是我到目前爲止:

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

只需使用大於a且小於

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:00,並且你使用了DateTime.Now(假設它早上是8:00)。那裏的生日不會包含在這個範圍內,因爲它被認爲是「現在」之前。

+1

然後你明白,該範圍的結束可能應該是' 2012-02-22 21:48:50

+0

我早些時候嘗試過,它會給出一些錯誤。 「無法找到類型或名稱空間名稱」AND「 」名爲'tab'的局部變量不能在此範圍內聲明,因爲它會給'tab'賦予不同的含義,'tab'已用於'child '範圍來表示別的東西「 – broguyman 2012-02-22 21:49:48

+0

@AaronBertrand這是真的,更新。 – 2012-02-22 21:52:57