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