当我在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"]));
}
}
答案 0 :(得分:2)
这里没有太多的信息,但根据我见过的其他开发人员遇到的问题,我可以猜测是什么时候发生的......
.NET中DateTime
对象的默认值不在sql中datetime
数据类型的有效范围内。如果您有一个不可为空的DateTime
属性或参数,而您没有初始化为有效值(或设置为default(DateTime)
),则通常会发生这种情况。
解决方案通常是在任何相关的c#对象中使用可空列和DateTime?
或始终将DateTime
属性初始化为sql期望的范围内的值
答案 1 :(得分:1)
这很容易解决,这是因为您的数据库格式不同.Net datetime fromat(您可以按月发送日期) 你所要做的就是:
当您收到数据库或向数据库发送日期时,请确保将其格式更改为相同的数据库格式。
//例如,数据库中的datetime是 13-03-2013 //更改.Net Date对象的格式 dt.toString( “DD-MM-YYYY”);