2016-04-05 16 views
-1

Tarih veri türü alanına sahip bir tablom var. şöyle içine bir değer eklerken ben bu alanda sadece ham tarih beklenebilir rağmen:Date veya DateTime SqlDbType bir Date SQL Server alanı için DateTime C# değeri eklerken kullanmalı mıyım?

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

o 2 "olarak LINQPad temsil edildiği gibi ... aslında, bir tarih saat değeri saklamak için SEM'ler/1/2016 12:00:00 AM ".

DateTime begDate = // bla 

Yani, böyle olunca da yapayım:

eklerken ben parametreye atıyorum C# değeri (C# bir "Tarih" -sadece türü yok gibi) DateTime türüdür

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

... ya da DateTime türü olarak atanan değerin türünü eşleştirmek için:

insertRptsGenerated.Parameters.Add("@BeginDate", SqlDbType.DateTime).Value = begDate; 
tabloya uygun olacak, bir tarih türü olarak parametresi belirten

?

+1

Değişikliklerin bir SQL sürümünde bulunup bulunmadığını TARİH türü kullanmak iyi olur. Sanırım C# de DATETIME alanlarından farklı olmayacak. – FLICKER

+0

[.NET System Type - SqlDbType] 'ın olası kopyası (http://stackoverflow.com/questions/35745226/net-system-type-to-sqldbtype) – Plutonix

cevap

2

.NET zaten .NET'te ne tür olduğunu biliyor. SqlDbType ;-) SqlDb bölümünün diğer ucunda hangi türden kullanılacağını soruyorsunuz. Veritabanındaki parametrenin türüne mümkün olduğunca yakın olmalıdır.

Eşleştirmelerin tam listesi için lütfen SQL Server Data Type Mappings için MSDN sayfasını ziyaret edin.

grafik gösterir Yani:

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

+0

Bağlantılı gönderiye göre, C#' nin DateTime eşlemesi SqlDbType'dir. DateTime2; Tarih için hiçbir şey göremiyorum. –

+0

@ B.ClayShannon Bunu yanlış yönden düşünüyorsunuz. SQL Server, eninde sonunda fiziksel depolama ile ilgili olduğundan daha ayrıntılı türlere sahiptir. En önemlisi SQL Server tipidir. Lütfen cevabıma yeni eklediğim bağlantıya bakın (Plutonix ile bağlantılı soruda da dikkat çektim). –