C#中的SQL超出范围值

时间:2013-03-12 22:41:46

标签: c# sql-server

当我在C#Debug中运行时,我遇到了SQL中超出范围值的问题。但选择转换日期时间,直接在SQL中工作。我能做什么..?

WHERE (Edu_Table_1.chatardeba = CONVERT(DATETIME, '" + datesList[dd] + "', 103)) 

...

List<DateTime> datesList = new List<DateTime>();
DataTable dt1 = DataObjects.FetchFromDatabase(String.Format("SELECT date from dates_table", magalkurseli, examType), this.serverAddress, this.dbCatalog); 
if (dt1 != null && dt1.Rows.Count > 0) 
{ 
    foreach (DataRow dr in dt1.Rows) 
    {
        datesList.Add(Convert.ToDateTime(dr["tarigi"])); 
    } 
} 

2 个答案:

答案 0 :(得分:2)

这里没有太多的信息,但根据我见过的其他开发人员遇到的问题,我可以猜测是什么时候发生的......

.NET中DateTime对象的默认值不在sql中datetime数据类型的有效范围内。如果您有一个不可为空的DateTime属性或参数,而您没有初始化为有效值(或设置为default(DateTime)),则通常会发生这种情况。

解决方案通常是在任何相关的c#对象中使用可空列和DateTime? 始终将DateTime属性初始化为sql期望的范围内的值

答案 1 :(得分:1)

这很容易解决,这是因为您的数据库格式不同.Net datetime fromat(您可以按月发送日期)  你所要做的就是:

  • 打开sql management studio并运行“select GETDATE()”它将返回数据库日期时间格式,
  • 当您收到数据库或向数据库发送日期时,请确保将其格式更改为相同的数据库格式。

    //例如,数据库中的datetime是   13-03-2013 //更改.Net Date对象的格式 dt.toString( “DD-MM-YYYY”);