ए DateTime
सी # में एक मान प्रकार, नहीं एक संदर्भ प्रकार है, और इसलिए खाली नहीं रह सकती। यह हालांकि स्थिर हो सकता है DateTime.MinValue
जो Sql Servers 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 सर्वर के बारे में
दिनांक और समय
जनवरी, 1753 से 31 दिसंबर, 9999 तक का डेटटाइम और समय का डेटा, एक सेकंड के तीन-सौवें (3.33 मिलीसेकंड या 0.00333 सेकंड के बराबर) की सटीकता के लिए। मानों को .000, .003, या .007 सेकंड की वेतन वृद्धि के लिए गोल किया जाता है
smalldatetime
दिनांक 1 जनवरी, 1900 से 6 जून, 2079 तक मिनट की सटीकता के साथ समय और डेटा। 29.998 सेकंड या उससे कम वाले स्माटलैडटाइम मान निकटतम मिनट तक गोल होते हैं; 29.999 सेकंड या उससे अधिक के मान को निकटतम मिनट तक गोल किया जाता है।
MSDN: Sql Server DateTime और SmallDateTime
अंत में, यदि आप अपने आप को C # DateTime
को एक स्ट्रिंग से sql में पास करते हुए पाते हैं, तो आपको अधिकतम सटीकता बनाए रखने और SQL सर्वर को एक समान त्रुटि को रोकने के लिए इसे निम्नानुसार प्रारूपित करने की आवश्यकता है।
string sqlTimeAsString = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fff");
अद्यतन (8 साल बाद)
Sql DateTime2
डेटाटाइप का उपयोग करने पर विचार करें जो DateTime
दिनांक सीमा 0001-01-01 through 9999-12-31
और समय सीमा के साथ .net के साथ बेहतर संरेखित करता है00:00:00 through 23:59:59.9999999
string dateTime2String = myDateTime.ToString("yyyy-MM-ddTHH:mm:ss.fffffff");
MSDN डेटाइम 2 (Transact-SQL)