使用LINQ to Entities。這段代碼在一個匿名類型LINQ to Entities中SQL的日期爲
MessageDate = DateTime.Parse(email.MessageDate),
引發此錯誤:
SqlDateTime overflow. Must be between 1/1/1753 12:00:00 AM and 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的字符串值是 「星期三,2011年6月15日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是內的所有有效範圍。
謝謝 馬克
這是email.MessageDate 「星期三,2011年6月15日十三時29分00秒-0400」 – user390480 2011-06-16 14:56:47
'DateTime.Parse(email.MessageDate)的值'是有效的SQL之外,返回日期日期範圍。使用調試器來找出它返回的內容。您可能希望將CultureInfo傳遞給DateTime.Parse(),以強制它以您想要的方式解釋日期,而不是使用運行代碼的任何機器的區域性信息。 – 2011-06-16 15:04:54