SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间---解决办法
2010-12-08 19:11
357 查看
原因:
传给数据库的时间类型的值为NULL,或者为DateTime.MinValue
这里的NULL指的是程序代码里面的null,大多数出现这种情况的情景是:在程序里面定义了一个时间类型的变量,没有给赋值,就传给数据库(或存储过程了)。这时这个变量的值默认是赋成了01年01月01日。
测试以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//导入SqlDateTime的命名空间
using System.Data.SqlTypes;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(DateTime.MinValue.ToString());
Console.WriteLine(DateTime.MaxValue.ToString());
Console.WriteLine(SqlDateTime.MinValue.ToString());
Console.WriteLine(SqlDateTime.MaxValue.ToSqlString());
}
}
}
输出:
0001-1-1 0:00:00
9999-12-31 23:59:59
1753-1-1 0:00:00
9999-12-31 23:59:59
.NET中 DateTime最小值为: 0001-1-1 0:00:00
数据库中DateTime最小值为: 1753-1-1 0:00:00,
显然.NET中的最小值超出了Sql最小值的最小范围,导致数据溢出的错误。最大值都一样
解决方法:
1、 对日期字段,没赋值的地方或用DateTime.MinValue的地方都换为,SqlDateTime.MinValue
2、 定义一个不程序中不可能用的最小值常量,对日期字段,没赋值的地方或用DateTime.MinValue的地方用此常量
public class DateTimeConst
{
/// <summary>
/// 无效时间(缺省时间)
/// </summary>
public static readonly DateTime INVALID_DATETIME = new DateTime(1900, 1, 1);
}
传给数据库的时间类型的值为NULL,或者为DateTime.MinValue
这里的NULL指的是程序代码里面的null,大多数出现这种情况的情景是:在程序里面定义了一个时间类型的变量,没有给赋值,就传给数据库(或存储过程了)。这时这个变量的值默认是赋成了01年01月01日。
测试以下代码:
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
//导入SqlDateTime的命名空间
using System.Data.SqlTypes;
namespace ConsoleApplication5
{
class Program
{
static void Main(string[] args)
{
Console.WriteLine(DateTime.MinValue.ToString());
Console.WriteLine(DateTime.MaxValue.ToString());
Console.WriteLine(SqlDateTime.MinValue.ToString());
Console.WriteLine(SqlDateTime.MaxValue.ToSqlString());
}
}
}
输出:
0001-1-1 0:00:00
9999-12-31 23:59:59
1753-1-1 0:00:00
9999-12-31 23:59:59
.NET中 DateTime最小值为: 0001-1-1 0:00:00
数据库中DateTime最小值为: 1753-1-1 0:00:00,
显然.NET中的最小值超出了Sql最小值的最小范围,导致数据溢出的错误。最大值都一样
解决方法:
1、 对日期字段,没赋值的地方或用DateTime.MinValue的地方都换为,SqlDateTime.MinValue
2、 定义一个不程序中不可能用的最小值常量,对日期字段,没赋值的地方或用DateTime.MinValue的地方用此常量
public class DateTimeConst
{
/// <summary>
/// 无效时间(缺省时间)
/// </summary>
public static readonly DateTime INVALID_DATETIME = new DateTime(1900, 1, 1);
}
相关文章推荐
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间---解决办法
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间的解决办法
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间---解决办法
- 解决:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间提示问题
- 解决:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间提示问题
- 错误提示:“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间 解决方法
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
- 错误:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
- 错误消息为: SqlDateTime 溢出。错误:“SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间。”
- System.Data.SqlTypes.SqlTypeException: SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
- SqlDateTime 溢出:必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
- 在ERP中定义用户时报错:SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间。
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
- 错误提示之:sqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM 之间
- SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间
- (转)SqlDateTime 溢出。必须介于 1/1/1753 12:00:00 AM 和 12/31/9999 11:59:59 PM之间