Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/sql-server/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
仅从sql数据库中检索具有todays';日期_Sql_Sql Server_Date - Fatal编程技术网

仅从sql数据库中检索具有todays';日期

仅从sql数据库中检索具有todays';日期,sql,sql-server,date,Sql,Sql Server,Date,我使用SQLServer2008R2存储数据,使用C#web应用程序检索数据并将其显示在gridview中 我已经存储了不同日期的数据,现在我想根据日期在C#gridview上每天显示数据,如:今天是8月15日,日期为8月15日的数据只填充gridview 我创建了数据源以填充gridview,该gridview以前显示所有数据,而不考虑日期: 代码如下: <asp:SqlDataSource ID="SqlDataSource1" runat="server" Con

我使用SQLServer2008R2存储数据,使用C#web应用程序检索数据并将其显示在gridview中

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

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

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

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


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

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

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

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

Where Cast(Student.Date As Date) = Cast(GetDate() As Date)
编辑:更新为使用强制转换而不是转换,并使其仅与今天的日期相等。

您可以使用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)
您可以使用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)
假设“日期”也包含一天中的时间信息,则在与当前日期进行比较时,必须将其去除:

WHERE CAST(Student.[Date] AS DATE) = CAST(GETDATE() AS DATE)
假设“日期”也包含一天中的时间信息,则在与当前日期进行比较时,必须将其去除:

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

IMHO将使用一个开放的范围,这比将专栏转换为日期要好:

DECLARE @today DATE = GETDATE();

SELECT 
...
WHERE column >= @today AND column < DATEADD(DAY, 1, @today);
DECLARE@today-DATE=GETDATE();
挑选
...
其中列>=@今天和列

.

IMHO,比将列转换为日期更好的方法是使用开放范围:

DECLARE @today DATE = GETDATE();

SELECT 
...
WHERE column >= @today AND column < DATEADD(DAY, 1, @today);
DECLARE@today-DATE=GETDATE();
挑选
...
其中列>=@今天和列


.

这可能不是“正确”的方法,但将其转换为长度为10的varchar将删除时间戳,然后将其转换回DateTime(不再具有时间戳)。当我需要删除一天中的时间信息时,我总是将(GetDate()转换为DATE)-我怀疑它的计算成本不如来回转换为字符数据类型。这不会返回任何日期大于今天日期的数据吗?“我认为这个问题要求平等。”丹·阿泰德(sp?)指出。谢谢。Hi ganders谢谢我按照你建议的方式做了,但它仍然显示数据库的所有数据,但不是当前日期的数据。这可能不是“正确”的方式,但将其转换为长度为10的varchar将删除时间戳,然后将其转换回日期时间(不再有时间戳)。当我需要删除一天中的时间信息时,我总是强制转换(GetDate()为DATE)-我怀疑它在计算上没有来回转换为字符数据类型那么昂贵。这不会返回日期大于今天日期的任何内容吗?“我认为这个问题要求平等。”丹·阿泰德(sp?)指出。谢谢。Hi ganders谢谢,我按照你的建议做了,但它仍然显示数据库的所有数据,但不是当前日期的数据。使用此命令,它不会在页面上显示任何数据和网格视图,这是因为你的datefield类型为DateTime,这意味着它可能还包含一天中的时间信息,应该去掉这些信息。请在别处查看我的答案。@user2684131我目前无法查看查询,但类似于我编辑中的示例也应该可以。实际上,您希望避免在
WHERE
子句中使用
DATEDIFF
,因为。一个开放的范围应该有
=和
@Aaron Bertrand。谢谢,因为我不能测试自动取款机。我编辑了我的答案。使用此命令,它不会在页面上显示任何数据和gridview,这是因为您的datefield类型为DateTime,这意味着它可能还包含一天中的时间信息,这些信息应该被删除。请在别处查看我的答案。@user2684131我目前无法查看查询,但类似于我编辑中的示例也应该可以。实际上,您希望避免在
WHERE
子句中使用
DATEDIFF
,因为。一个开放的范围应该有
=和
@Aaron Bertrand。谢谢,因为我不能测试自动取款机。我编辑了我的答案。瞧,谢谢@Don问题解决:)@Don你能帮我吗瞧,谢谢@Don问题解决:)@Don你能帮我吗