Calendar Extender中的DateTime

时间:2009-03-11 09:20:48

标签: asp.net sql vb.net

我在asp.net中使用calendarextender控件。它只显示日期,而不是时间。但是在插入数据库时​​,会自动插入时间。但是在使用日期条件从数据库中检索数据时,不会显示相应的记录。我可以对storedprocedure进行哪些修改来解决此问题。

2 个答案:

答案 0 :(得分:1)

您最有可能遇到的问题是,如果您正在寻找等于3/11/2009的日期,由于时间戳,您可能永远找不到它。您可以使用一些方法来更改标记过程,即考虑日期的范围:

使用Between语句将为您提供包容性范围

Select myname,mydate from sometable 
    where mydate between 3/10/2009 and 3/11/2009 

使用>和<给你一个专属范围

Select myname,mydate from sometable 
    where mydate >3/10/2009 and mydate < 3/12/2009 

利用DateAdd功能去除该字段的时间。 SQLTeam Blog

有一些很好的例子
dateadd(dd,0, datediff(dd,0,myDate))

或者 如果您可以更改表本身并且您正在使用SQL Server 2008,则可以使用新的SQL Server 2008 日期 DataType,这是一个没有时间组件处理的日期。在MSDN博客上有关于新Date and Time enhancements in SQL Server 2008的好博客。

不要忘记你也可以查看插入程序(如果适用)并将时间归零。

此外,在处理日期时间时,请确保考虑&gt; =和&lt; = ,以免错过任何记录。

希望这能为您提供足够的选择来解决您的问题。

答案 1 :(得分:0)

在数据库中,datetime数据类型包括日期和时间,无论何时只提供日期或日期时间。如果您将日期插入为'1/1/2011',那么它将被解释为 1/1/2011 00:00:00 AM

在选择查询中失败,因为它试图比较日期和时间(例如在相同日期之间,即。'在2011年1月1日和2011年1月1日之间'

使用日/月/年组件类似子句或使用&lt;,&gt;操作者 即

select thisone from sometable where day(tabledate) between day(wheredate1) and day(wheredate2)
  and month(tabledate) between month(wheredate1) and year(wheredate2)
and year(tabledate)  between year(wheredate1) and year(wheredate2)

select thisone from sometable where tabledate>=wheredate1 and tabledate<=wheredate1

运营商=适用于您使用包容性或排他性搜索的情况