在为Date SQL Server字段添加DateTime C#值时,我应该使用Date或DateTime SqlDbType吗?

时间:2016-04-05 22:53:56

标签: sql-server date datetime type-conversion sqldatatypes

我有一个包含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;

1 个答案:

答案 0 :(得分:3)

.NET已经知道它在.NET中的类型。系统会询问您在另一端使用哪种类型,因此SqlDbType ;-)中的 SqlDb 部分。您应该尽可能地匹配数据库端参数的类型。

有关映射的完整列表,请参阅SQL Server Data Type Mappings的MSDN页面。

该图表显示:

SQL Server DATE == .NET DateTime == SqlDbType.Date