-5

当我在 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"])); 
    } 
} 
4

2 回答 2

2

这里没有太多信息可以继续,但根据我看到其他开发人员遇到的问题,我可以猜测发生了什么......

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

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

于 2013-03-12T22:45:06.647 回答
1

这是很容易解决的问题,并且发生这种情况是因为您的数据库格式与 .Net datetime fromat 不同(您可以将日期作为月份发送)您所要做的就是:

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

    // 例如,数据库中的日期时间是 13-03-2013 // 更改 .Net 日期对象的格式 dt.toString("dd-MM-yyyy");

于 2013-03-12T22:56:59.353 回答