LINQ到实体中SQL的日期

问题描述

| 使用LINQ到实体。此代码为匿名类型
MessageDate = DateTime.Parse(email.MessageDate),
抛出此错误:   SqlDateTime溢出。必须介于1/1/1753 12:00:00 AM和12/31/9999 11:59:59 PM之间。 MessageDate是一个SQL DateTime,email.MessageDate是一个字符串。 我试过了,但没有帮助:
MessageDate = DateTime.Parse(string.Format(\"{0:yyyy-MM-dd HH:mm:ss.fff}\",DateTime.Parse(email.MessageDate)))
任何帮助表示赞赏。 更多信息: email.MessageDate的字符串值为\“ Wed,15 Jun 2011 13:29:00 -0400 \” 另外,如果我只是做
MesssageDate = Date.Now
我犯了同样的错误。 另外,它是SQL Server 2005 更多测试:我设置了一个断点以查看解决了的问题
var x = 1;
if (DateTime.Now > System.Data.SqlTypes.SqlDateTime.MinValue.Value)
    x = 1; // True
if (DateTime.Now < System.Data.SqlTypes.SqlDateTime.MinValue.Value)
    x = 1;
if (DateTime.Now > System.Data.SqlTypes.SqlDateTime.MaxValue.Value)
    x = 1;
if (DateTime.Now < System.Data.SqlTypes.SqlDateTime.MaxValue.Value)
    x = 1; // True
if (DateTime.Now < DateTime.MinValue)
    x = 1;
if (DateTime.Now > DateTime.MinValue)
    x = 1; // True
if (DateTime.Now < DateTime.MaxValue)
    x = 1; // True
if (DateTime.Now > DateTime.MaxValue)
    x = 1;
所以在我看来DateTime.Now在所有有效范围内。 谢谢, 标记     

解决方法

        它可以很好地解析字符串,但是不幸的是,有效的.net日期范围与有效的SQL日期范围不同。 email.MessageDate可能设置为DateTime.MinValue,它早于最早的有效SQL日期。     ,        如果使用的是SQL 2008,则可以使用datetime2代替datetime类型。如果您无法更改SQL数据类型,则建议您滚动自己的\“ smart \” DateTime解析器。     ,        这很难找到。答案是: LINQ to Entities在不向具有DateTime字段的表提供Date信息方面存在一些问题。因此,即使您不需要在DateTime字段中放入数据,除非您这样做,否则Submit也不会起作用。因此,例如,在没有数据可提供的字段上,我所做的就是...
MessageDeliveryTime = null,
现在,让我着迷的另一件事是这个。我在数据库名称Created中有一列,该列自动用getdate()填充。 LINQ to Entities不在乎您的默认值很小。你必须传递一些东西;所以只要这样做:
Created = DateTime.Now
我希望我一生中消失的时光不会白费,这会帮助某个人。 标记     

相关问答

依赖报错 idea导入项目后依赖报错,解决方案:https://blog....
错误1:代码生成器依赖和mybatis依赖冲突 启动项目时报错如下...
错误1:gradle项目控制台输出为乱码 # 解决方案:https://bl...
错误还原:在查询的过程中,传入的workType为0时,该条件不起...
报错如下,gcc版本太低 ^ server.c:5346:31: 错误:‘struct...