2016-04-05 10 views
-1

私は日付データ型のフィールドを持つテーブルを持っています。そのようにそれに値を挿入するとき、私はその場でちょうど生の日付を期待するものの:Date SQL ServerフィールドにDateTime C#値を追加するときに、DateまたはDateTime SqlDbTypeを使用する必要がありますか。

update reportsgenerated 
set begindate = '2016-02-01' 
where rptgenid = 2; 

...それは2」としてLINQPadで表されるように、実際に、日付時刻値を格納するSEMS/1/2016 12:00:00 AM "となります。

挿入する際に、私はパラメータに割り当てるだC#の値は、日付と時刻型である(C#が「日」のみのタイプを持っていないとして):

DateTime begDate = // bla 

場合であり、Iは、必要があることをテーブルに一致するように、日付型としてパラメータを指定:

insertRptsGenerated.Parameters.Add("@BeginDate", SqlDbType.Date).Value = begDate; 

...かのDateTime型として、割り当てられた値の型と一致する:

insertRptsGenerated.Parameters.Add("@BeginDate", SqlDbType.DateTime).Value = begDate; 

+1

あなたはそれがあなたのSQLのバージョンで利用可能である場合にDATE型を使用する方が良いと思います。私はC#でそれはDATETIMEフィールドと異なることはないと思います。 – FLICKER

+0

可能な複製[.NET System Type to SqlDbType](http://stackoverflow.com/questions/35745226/net-system-type-to-sqldbtype) – Plutonix

答えて

2

.NETは既に.NET内のどのタイプかを知っています。他の側でどのタイプを使用するかが尋ねられているので、SqlDbの部分はSqlDbTypeの部分です。可能な限りデータベース側のパラメータのタイプと一致させる必要があります。

マッピングの詳細については、SQL Server Data Type MappingsのMSDNページを参照してください。

チャートが表示されていること:

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

+0

リンクされたポストによると、C#のDateTimeのマッピングはSqlDbTypeです。 DateTime2;私は日付については何も見ません。 –

+0

@ B.ClayShannonあなたは間違った方向から考えています。 SQL Serverには、最終的に物理ストレージに関係するため、より細かい種類があります。最も重要なのは、SQL Serverの種類です。私はちょうど私の答え(私はPlutonixによってリンクされた質問にも記載されて気づいた)を追加したリンクをご覧ください。 –

関連する問題