将DateTime转换为Date时出错

时间:2014-10-30 09:23:10

标签: c# linq-to-sql

我使用Linq-to-sql从WCF服务调用存储过程。函数签名在设计器文件中定义为:

public int MS_SetTimeKeeperRecord( ... global::System.Data.Linq.Mapping.ParameterAttribute(Name="ReportDate", DbType="Date")] System.Nullable<System.DateTime> reportDate, ...)

传递给reportDate的参数是C#DateTime类型变量,并且没有Date类型变量。我从通话中收到以下错误:

  

将日期数据类型转换为日期时间数据类型会导致超出范围的值

输入字段不为空。

我该如何做到这一点?

1 个答案:

答案 0 :(得分:0)

C#DateTime MinValue为00:00:00.0000000, January 1, 0001.,但如果我没有弄错,则SQL min datetime值为1753-01-01 00:00:00.000。如果您尝试传递的值小于SQL min datetime,则可能会出现此错误。此外,SQL max datetime为9999-12-31 23:59:59.997,但C#max DateTime为23:59:59.9999999, December 31, 9999

更新

错误是从日期转换为日期时间。 SQL中的Datedatetime有不同的限制,其范围为0001-01-01 through 9999-12-31,但日期时间范围如上所述。因此无论价值如何,它都超出了datetime类型的范围,尽管正如评论中提到的那样,您使用的是日期。

http://msdn.microsoft.com/en-us/library/bb630352.aspx

http://msdn.microsoft.com/en-us/library/ms187819.aspx