एक DateTime
सी # में एक मान प्रकार है, संदर्भ प्रकार नहीं है, और इसलिए शून्य नहीं हो सकता है। हालांकि यह स्थिर DateTime.MinValue
. हो सकता है जो Sql सर्वर की सीमा से बाहर है DATETIME
डेटा प्रकार।
मूल्य प्रकारों को हमेशा स्पष्ट रूप से सेट किए बिना (इस मामले में DateTime.MinValue) के बिना हमेशा एक (डिफ़ॉल्ट) मान (शून्य का) होने की गारंटी दी जाती है।
निष्कर्ष यह है कि आपके पास शायद एक अनसेट डेटटाइम मान है जिसे आप डेटाबेस में पास करने का प्रयास कर रहे हैं।
DateTime.MinValue = 1/1/0001 12:00:00 AM
DateTime.MaxValue = 23:59:59.9999999, December 31, 9999,
exactly one 100-nanosecond tick
before 00:00:00, January 1, 10000
MSDN:DateTime.MinValue
Sql सर्वर के संबंध में
MSDN:Sql Server DateTime and SmallDateTime
अंत में, यदि आप स्वयं को C# DateTime
. पास करते हुए पाते हैं एसक्यूएल के लिए एक स्ट्रिंग के रूप में, आपको अधिकतम सटीकता बनाए रखने और एसक्यूएल सर्वर को एक समान त्रुटि फेंकने से रोकने के लिए इसे निम्नानुसार प्रारूपित करने की आवश्यकता है।
string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
अपडेट (8 साल बाद)
sql DateTime2
. का उपयोग करने पर विचार करें डेटाटाइप जो .net DateTime
. के साथ बेहतर तरीके से संरेखित होता है दिनांक सीमा के साथ 0001-01-01 through 9999-12-31
और समय सीमा 00:00:00 through 23:59:59.9999999
. तक
string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");