只检索具有今天日期的sql数据库中的记录

时间:2013-08-15 13:40:47

标签: sql sql-server date

我正在使用SQL SERVER 2008 R2存储数据和C#Web应用程序来检索数据并将其显示到gridview中。

我已经存储了不同日期的数据现在我想根据日期在C#gridview上每天显示数据:因为今天是15月8日,而日期为15月8日的数据只填充gridview。

我已经创建了数据源来填充gridview,以前显示所有数据而不考虑日期: 代码如下:

 <asp:SqlDataSource ID="SqlDataSource1" runat="server" 
        ConnectionString="<%$ ConnectionStrings:LoginConnectionString %>" 
        SelectCommand="SELECT * FROM [Student]"></asp:SqlDataSource>

现在我想只显示当前日期/今天的日期数据,如上所述。 请指导我如何编写sql命令来实现上述功能。 表名是Student 列名称是存储为日期时间的日期

由于

4 个答案:

答案 0 :(得分:2)

假设“日期”还包含时间信息,则必须在与当前日期进行比较时将其删除:

WHERE CAST(Student.[Date] AS DATE) = CAST(GETDATE() AS DATE)

答案 1 :(得分:1)

将where子句添加到select语句中,如下所示:

Where Cast(Student.Date As Date) = Cast(GetDate() As Date)

编辑:更新以使用强制转换而不是转换,并使其仅等于今天的日期。

答案 2 :(得分:0)

您可以使用DATEDIFF

SELECT * FROM tablename where datefield = DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

修改

我目前无法检查,但您可以使用下面的查询调整和提取日期之间的所有日期。

SELECT * FROM TEST_NAMES 
where Date < DATEADD(day, DATEDIFF(day, 0, GETDATE()), 1)
and
Date >= DATEADD(day, DATEDIFF(day, 0, GETDATE()), 0)

修改
开始测试了。您可以考虑可以将字段转换为VARCHAR的时间戳差异,并使用以下查询。

SELECT * FROM tablenames 
where CONVERT(VARCHAR(10), Datecolumn) = CONVERT(VARCHAR(10), GETDATE())

答案 3 :(得分:0)

比将日期列为日期更好,恕我直言,将使用开放式范围:

DECLARE @today DATE = GETDATE();

SELECT 
...
WHERE column >= @today AND column < DATEADD(DAY, 1, @today);

Some background info on why you don't want to convert to string and why, in most cases, you want to avoid applying functions to columns