将varchar数据类型转换为日期时间数据类型会导致超出范围的值

时间:2011-09-08 02:23:17

标签: c# asp.net sql sql-server-2005

我在ASP.net C#中有以下SQL Server错误:

  

导致将varchar数据类型转换为日期时间数据类型   在超出范围的价值。

我的SQL查询是:

string query = @"update Conference set Conference_name='" 
    + name + "',AIMS='" + AIMS + "',Scope='" + scope 
    + "',Submission_Deadline='" + submissionDay 
    + "',Notification_Deadline='" + notificationDay 
    + "',Camera_Ready_submission='" + cameraReadyDay 
    + "',Early_authors_registration='" + earlyAuthorsDay 
    + "',Start_Date='" + startDay + "',End_Date='" + endDay 
    + "',Location='" + location 
    + "' where Conference_ID= '" + id+"'";

4 个答案:

答案 0 :(得分:1)

我认为您的查询没问题,这是您的数据不好。其中一个日期字段(startDay,EndDay,NotificationDay)看起来不像有效日期。

答案 1 :(得分:1)

也许是时候添加一些验证了。我可以建议RangeValidator,将type设置为日期吗?

答案 2 :(得分:0)

您的某个日期值,可能是开始日期或结束日期无法转换为日期时间。有助于查看数据。

答案 3 :(得分:0)

这与c#ToString()行为有关。由于应用程序的“文化”,ToString()方法默认为一个值。

由于您的应用文化设置,“2011年1月13日”可以字符串化为“2011-01-13”或“2011-13-01”。

这可能会导致在尝试找到一年中的13个月时出错。

要解决此问题,我建议使用SqlCommand并设置参数...

请参阅http://www.knowdotnet.com/articles/dynamicsqlparameters.html

示例可以很容易地转换为c#。