c# - The conversion of a datetime2 data type to a datetime data type resulted in out-of-range value -
मैं सी # प्रोग्राम विकासशील स्टूडियो 2012 में एंटीटी फ़्रेमवर्क का उपयोग कर रहा हूं। मैं अपने डेटाबेस तालिका में रिकॉर्ड जोड़ना चाहता हूं रिकॉर्ड (ऑब्जेक्ट) में एक विशेषता (TRANSACTION_DATE) शामिल है जो शून्य मान की अनुमति नहीं देता है और यह दिनांकटाइम प्रारूप है। डेटाबेस में मैं इस प्रारूप के लिए लक्ष्य कर रहा हूं:
yyyy-MM-dd HH: mm: ss.fff
इसलिए मुझे वर्तमान तिथि और समय पर, मेरा कोड ऐसा है:
newEntry.TRASACTION_DATE = दिनांक टाइम। पर्स एएक्सैक्ट (डेटटाइम.Now.ToString (), "yyyy-MM-dd HH: mm: ss एफएफएफ ", कल्चर इन्फो। इन्विरियनटीकल्चर);
लेकिन यह मुझे त्रुटि दे रहा है:
एक datetime2 डेटा प्रकार को एक datetime डेटा प्रकार के रूपांतरण के परिणामस्वरूप आउट-ऑफ-रेंज मान दिया गया। < / P>
मैं जानना चाहता हूं कि यह मेरे प्रारूप में परिवर्तित क्यों नहीं हो रहा है?
बाधाएं:
आपको डेटाबेस के बारे में किसी विशेष स्ट्रिंग प्रारूप में मूल्यों को संचयित करने के बारे में नहीं सोचना चाहिए - कोई भी इससे अधिक संख्याएं दशमलव या हेक्स के रूप में संग्रहित करती हैं।
इसके बजाय, आपको इसे केवल एक तारीख / समय के रूप में देखना चाहिए, उदा।
// TODO: क्या आप वास्तव में चाहते हैं स्थानीय समय, बजाय UtcNow? // TODO: TRANSACT_DATE को TransactionDate आदर्श रूप से परिवर्तित करें, // .NET नामकरण सम्मेलनों का पालन करें newEntry.TRANSACT_DATE = DateTime.Now;
जब आप मान पुनः प्राप्त करते हैं, तो आपको उस बिंदु पर एक आपके द्वारा संग्रहीत आंतरिक डेटा के बीच अंतर करना महत्वपूर्ण है (इस मामले में एक तिथि / समय) और पाठ स्वरूप जो इसे किसी विशेष संदर्भ / एप्लिकेशन को प्रदर्शित करने के लिए उपयोग किया जाता है। आपको किसी भी समय रूपांतरणों से / से स्ट्रिंग्स से बचना चाहिए, जब आपको वास्तव में एक की आवश्यकता न हो आदर्श रूप में, ये केवल आपके आवेदन की सीमाओं पर ही होना चाहिए - उदा। जब किसी उपयोगकर्ता को पाठ प्रदर्शित करते हैं, या संभावित रूप से JSON या XML पर सीरियल कर रहे हैं जब भी कोई एपीआई आप नहीं एक रूपांतरण (जैसे एक डेटाबेस पैरामीटर के साथ) को करने की अनुमति देता है, तो आपको इसे से बचना चाहिए। आपकी वर्तमान त्रुटि के लिए - क्या यह संभव है कि यह एक अलग क्षेत्र है जो आप पॉपुलेट नहीं कर रहे हैं, और जो इसलिए दिनांकटाइम प्राप्त करना चाहिए तब यदि आप उपयोगकर्ता को मान प्रदर्शित करना चाहते हैं तो आप किसी विशिष्ट प्रारूप को लागू कर सकते हैं। अलग-अलग उपयोगकर्ता विभिन्न प्रारूपों को अच्छी तरह से चाहते हैं - और अलग-अलग समय क्षेत्रों में उसी तिथि / समय को भी प्रदर्शित करना चाह सकते हैं।
डिफ़ॉल्ट (दिनांकटाइम)
का उपयोग कर रहे हैं, जो सीमा से बाहर हो जाएगा? इससे बहुत अधिक समझ हो जाएगी - जबकि DateTime.Now
वास्तव में सीमा से बाहर नहीं होना चाहिए, जब तक कि आपने एक अलग बाध्यता लागू नहीं की हो, या आपके सिस्टम घड़ी मील से बाहर हो।
Comments
Post a Comment