在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之间的数据将被查出。
总结一下,以备日后查找