我使用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
类型变量。我从通话中收到以下错误:
将日期数据类型转换为日期时间数据类型会导致超出范围的值
输入字段不为空。
我该如何做到这一点?
答案 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中的Date
对datetime
有不同的限制,其范围为0001-01-01 through 9999-12-31
,但日期时间范围如上所述。因此无论价值如何,它都超出了datetime
类型的范围,尽管正如评论中提到的那样,您使用的是日期。