0

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

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

我创建了数据源来填充先前显示所有数据的网格视图,无论日期如何:代码如下:

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

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

谢谢

4

4 回答 4

2

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

WHERE CAST(Student.[Date] AS DATE) = CAST(GETDATE() AS DATE)
于 2013-08-15T13:57:23.817 回答
1

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

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

编辑:更新为使用演员表而不是转换,并使其仅等于今天的日期。

于 2013-08-15T13:43:04.133 回答
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())
于 2013-08-15T13:52:18.507 回答
0

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

DECLARE @today DATE = GETDATE();

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

关于为什么不想转换为字符串以及为什么在大多数情况下要避免将函数应用于列的一些背景信息

于 2013-08-15T14:13:53.740 回答