2016-04-05 3 views
-1

Ich habe eine Tabelle mit einem Feld Datum Datentyp. Obwohl ich nur das rohe Datum auf diesem Gebiet erwarten würde, wenn ein Wert in mich wie so Einfügen:Soll ich Date oder DateTime SqlDbType beim Hinzufügen eines DateTime C# -Werts für ein Date SQL Server-Feld verwenden?

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

... es sems tatsächlich ein Datum Zeitwert zu speichern, wie es in LINQPad als "2 dargestellt wird,/1/2016 12:00:00 Uhr ".

Der C# Wert I auf den Parameter bin zuweisen, wenn ein Datetime-Typ Einfügen (wie C#, um ein „Date“ -nur Typ nicht haben):

DateTime begDate = // bla 

Wenn das der Fall, sollte ich bezeichnet die Parameter als Datumstyp, um die Tabelle entsprechen:

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

... oder als Datetime-Typ, entspricht den Typ des zugewiesenen Wertes:

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

?

+1

ist besser, DATE-Typ zu verwenden, wenn es in der SQL-Version verfügbar ist. Ich denke, in C# wird es nicht anders sein als DATETIME Felder. – FLICKER

+0

Mögliches Duplikat von [.NET-Systemtyp zu SqlDbType] (http://stackoverflow.com/questions/35745226/net-system-type-to-sqldbtype) – Plutonix

Antwort

2

.NET weiß bereits, welcher Typ es in .NET ist. Sie werden gefragt, welcher Typ am anderen Ende verwendet werden soll, daher der SqlDb Teil des SqlDbType ;-). Sie sollten so genau wie möglich den Typ des Parameters auf der Datenbankseite anpassen. Die vollständige Liste der Zuordnungen finden Sie auf der MSDN-Seite für SQL Server Data Type Mappings.

Das Diagramm zeigt:

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

+0

Entsprechend dem verknüpften Post ist das Mapping für C# 's DateTime SqlDbType. DateTime2; Ich sehe nichts für Date. –

+0

@ B.ClayShannon Sie denken darüber aus der falschen Richtung. SQL Server verfügt über granularere Typen, da es sich letztendlich um physischen Speicher handelt. Am wichtigsten ist der SQL Server-Typ. Bitte sehen Sie den Link, den ich gerade zu meiner Antwort hinzugefügt habe (was ich bemerkte, wurde auch in der von Plutonix verknüpften Frage notiert). –