我有一个包含Date数据类型字段的表。虽然我希望在插入值时只在该字段中使用原始日期,如下所示:
update reportsgenerated
set begindate = '2016-02-01'
where rptgenid = 2;
...它实际上是sems来存储日期时间值,因为它在LINQPad中表示为" 2/1/2016 12:00:00 AM "。
插入时分配给参数的C#值是DateTime类型(因为C#没有" Date" -only类型):
DateTime begDate = // bla
在这种情况下,我应该将参数指定为日期类型,以匹配表:
insertRptsGenerated.Parameters.Add("@BeginDate", SqlDbType.Date).Value = begDate;
...或作为DateTime类型,以匹配指定值的类型:
insertRptsGenerated.Parameters.Add("@BeginDate", SqlDbType.DateTime).Value = begDate;
答案 0 :(得分:3)
.NET已经知道它在.NET中的类型。系统会询问您在另一端使用哪种类型,因此SqlDbType
;-)中的 SqlDb 部分。您应该尽可能地匹配数据库端参数的类型。
有关映射的完整列表,请参阅SQL Server Data Type Mappings的MSDN页面。
该图表显示:
SQL Server DATE
== .NET DateTime
== SqlDbType.Date