2010-11-02 19 views
6

के भीतर होने की तिथि को मान्य करना मैं अपने SQLLommand उदाहरण में पैरामीटर के रूप में जोड़ने से पहले एक सिस्टम .डेटटाइम मान को सत्यापित करना चाहता हूं।SqlDbType.DateTime रेंज

SqlDbType गणन के लिए MSDN प्रलेखीकरण का कहना है:

का दिनांक और समय डेटा 3.33 मिलीसेकेंड की सूक्ष्मता तक 31 दिसंबर, 9999 1 जनवरी, 1753 से मूल्य में लेकर।

मूल्य, मैं

public readonly DateTime SqlDateTimeMin = new DateTime(1753, 1, 1); 
public readonly DateTime SqlDateTimeMax = new DateTime(9999, 12, 31); 

if (value < SqlDateTimeMin || value > SqlDateTimeMax) 
    // Validation check fails 
else 
    // Validation check succeeds 

यह सबसे अच्छा तरीका है का उपयोग कर रहा प्रमाणित करने के लिए? क्या इन न्यूनतम और अधिकतम मूल्यों को हार्ड कोडिंग करने का कोई विकल्प है?

उत्तर

19

SqlDateTime.MinValue और SqlDateTime.MaxValue के बारे में क्या?

नोट: ये हैं एसक्यूएल प्रकार न्यूनतम/अधिकतम नहीं पिछले 2 जवाब :-)

+1

+1 - ऐसा लगता है कि यह * बिल्कुल * ओपी क्या ढूंढ रहा है। –

+0

दोपहर में देर से आंखें खराब हो रही हैं। मेरी गलती। – dotariel

+0

इस पर विस्तार करने के लिए, यदि आपको नियमित डेटटाइम (कुछ मैंने ठोकर खाई है) की जांच करने की आवश्यकता है, तो याद रखें कि SqlDateTimes एक वैल्यू प्रॉपर्टी का पर्दाफाश करता है, जो डेटटाइम है। –

0
SqlDateTime.MaxValue = 12/31/9999 
SqlDateTime.MinValue = 1/1/1753 

आपका कोड तो लिखा होगा:

if (value < SqlDateTime.MinValue || value > SqlDateTime.MaxValue) 

मैं इस को अपनी आवश्यकताओं DateTime.MaxValue और DateTime.MinValue की तुलना में बेहतर मिलता है लगता है, क्योंकि DateTime.MinValue 1753/01/01 नहीं है बल्कि 1/1/0001 है।

-4

मुझे लगता है कि असली सवाल क्यों अपने उपयोगकर्ताओं को यह सीमा के बाहर दिनांकों प्रवेश कर रहा है है की तरह .net प्रकार? यह सत्यापित करने के लिए आपका कोड ठीक है, हालांकि मैं सुझाव दूंगा कि यह यूआई में एक बड़ी समस्या है जहां लोग फर्जी तिथियां दर्ज कर सकते हैं।

+2

हम में से कुछ के लिए, एक तिथि में एक टाइपो बनाना आसान है। या तारीख प्रारूप को गलत समझने के लिए (मिमी/डीडी/yyyy या डीडी/मिमी/yyyy)। – DOK

+0

उन्हें एक दिनांक पिकर दें और टेक्स्टबॉक्स को अक्षम करें। इस तरह मैं रोल करता हूं ... :-) – Achilles

+1

केवल यूआई-स्तरीय सत्यापन पर भरोसा करने के लिए पर्याप्त नहीं है, क्योंकि "फिल्टर" (बेहतर शब्द की कमी के लिए) को छोड़ दिया जा सकता है (वेब ​​ऐप्स में काफी आसानी से, एक मामले के रूप में तथ्य)। सत्यापन (न्यूनतम करने के लिए), उपयोगकर्ता के हाथों की पहुंच से बाहर सर्वर पर होना चाहिए। यूआई-स्तरीय सत्यापन केवल उपयोगकर्ता अनुभव को सुशोभित करने और प्रसंस्करण समय/संसाधनों को सहेजने के लिए किया जाता है। और, इस तरह आपको इसके बजाय रोल करना चाहिए। –

संबंधित मुद्दे