当我将DateTime变量与SqlDateTime.MinValue进行比较时:
if (StartDate > SqlDateTime.MinValue)
{
// some code
}如果StartDate是
SqlDateTime溢出必须在1/1/1753 12:00上午12:00至12/31/9999 11:59:59下午
只要做一点小小的改变,就可以很容易地解决这个问题:
if (StartDate > SqlDateTime.MinValue.Value)
{
// some code
}
我知道,在第一个代码片段中,我将苹果与桔子进行比较。我不明白的是异常信息。似乎我将一个DateTime值赋值给一个SqlDateTime变量。
我遗漏了什么?
发布于 2016-10-18 17:18:03
.NET本机DateTime类型(具体地说,它的一个结构)包含比SqlDateTime数据类型所能支持的更广泛的可能值。更具体地说,DateTime值可以从01/01/0000到理论的12/31/9999不等。
当编译器试图强迫类型进行比较时,它尝试将一个DateTime值(MinValue.Value)放在SqlDateTime支持的范围之外(在上下文中的值在下面或‘在上下文中’),从而导致溢出。
发布于 2016-10-18 17:19:33
来自MSDN上的SqlDateTime结构:
SqlDateTime结构 表示从1753年1月1日至12月31日9999年间的日期和时间数据,其精度为3.33毫秒,存储在数据库中或从数据库中检索。SqlDateTime结构具有与其相应的.NET框架类型DateTime不同的底层数据结构,后者可以表示12:00 AM 1/1/0001和11:59:59 PM 12/31/9999之间的任何时间,精度可达100纳秒。SqlDateTime实际上将相对差异存储到00:00:00 AM 1/1/1900。因此,从"00:00:00 AM 1/1/1900“到整数的转换将返回0。
https://stackoverflow.com/questions/40114222
复制相似问题