日期:2014-05-17  浏览次数:20587 次

sql 2008 插入日期时间 数据库报错
sql2008数据库
语句是很简单的查询语句
SELECT count(*) AS NUMBER FROM Table1 WHERE  EndTime <= '2012-12-19 12:48:10'

EndTime的类型是datetime
在sql里新建查询执行不会报错。
但是在c#\asp.net里执行,就会报下面的错误,这是sql2008的设置文件吗?

System.Exception ---> System.Data.SqlClient.SqlException: The conversion of a varchar data type to a datetime data type resulted in an out-of-range value.
 at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)
------解决方案--------------------
不会要把2月30号 插入数据库吧? 提示日期超出范围 。检查下吧
------解决方案--------------------
你前端的数据类型应该和数据库的不一致锁导致的。
------解决方案--------------------
整个语句就是上面的那句了,看语句好象都没什么问题。在程序里就会提示超出范围那个错误
------解决方案--------------------
试试:endtime<= CONVERT(DATETIME,'2012-12-19 12:48:10')

------解决方案--------------------
用楼上的那样写法也是报错
------解决方案--------------------
你select * 看看表中那个查询的字段都是时间类型的么?
------解决方案--------------------
可能是表中已存在的数据造成的
------解决方案--------------------
表中已存在的错误的时间格式的数据造成的。
------解决方案--------------------
那证明你前端程序转换出问题了
------解决方案--------------------
插入数据之前先判断数据是不是合法的时间。