在sql 的数据库表里时间字段是比较全的格式:例如GetdataTime字段:2007-06-05 12:34:50。

但在前台程序里,利用日历控件,可能查询的时候是以某天来做比较,例如开始时间:2001-06-05,结束时间:2010-03-04,在项目开发过程中发现,利用between...and...语句做查询时,会出现错误,尤其是开始时间和结束时间如果是同一天,根本不会查出任何数据,而事实上数据库里有这一天的数据。

原查询语句:

queryString = "where GetdataTime Between'" + begintime + "'And'" + endtime + "'";

解决方法:利用CONVERT语句将GetdataTime字段的值做处理,保留日期的值,再做比较。

修改后的查询语句: 

 queryString = "where CONVERT(char(20),GetdataTime,23) Between '" + begintime + "' And '" + endtime + "'";

CONVERT(char(20),GetdataTime,23)将保留日期部分,例如2007-06-05

 Convert(VARCHAR(10),{0},8)  保留时间

 

CONVERT语句对时间的操作可详细参考:http://www.cnblogs.com/owendu/archive/2007/01/12/619189.html

经过以上修改,再查询可得到正确的值,例如开始和结束日期同为2007-06-05,则数据表中所有在2007-06-05 00:00:00至2007-06-05 24:00:00之间的数据将被查出。

总结一下,以备日后查找