如何处理SQL查询时间段查不到当日条目的问题?
以前查询都是直接取date >=this.dateTimePicker1.Value anddate <=this.dateTimePicker2.Value的格式,相应列在sql里存为datatime的格式,结果当天的记录总是无法查到。
原因在于dateTimePicker.Value的值的格式为xx-xx-xx xx:xx:xx,查取的永远是当前时间,因此不会有符合条件项目。
可以这样修改:
1.不改变SQL的数据结构,查询时写成这样的语句:date >= '"+this.dateTimePicker1.Value.ToShortDateString()+" 00:00:00 ' and date <= '"+this.dateTimePicker2.Value+"'");
就是先把dateTimePicker的value属性的时间值给抹去,即转换为ToShortDateString的形式,其表现是xxxx-xx-xx的日期格式,在人为加上00:00:00的时间段。
录入时间的时候,取dateTimePicker.Value不变,这样可保留时间的详细信息
2.改变数据结构,把sql里表的datatime列换为char(30)列,存取数值都取dateTimePicker.text属性,该属性为“XXXX年XX月XX日”的格式,对于系统时间,如DateTime.Today,其格式为XXXX-XX-XX XX:XX:XX,通过DateTime.Today.ToLongDateString()可以转为XX年XX月XX日的格式,或者用DateTime.Today.year+"年"+DateTime.Today.month+"月"+DateTime.Today.day++"日"来转换。然后用date >=this.dateTimePicker1.text anddate <=this.dateTimePicker2.text就可以查到今天操作的相应值
综合考虑,第二种因为改变了数据库表结构,由datatime变成了普通的char,不利用数据管理,所以不如第一种好。
本文地址:http://www.45fan.com/a/question/68306.html