एमएस दस्तावेज़ कहा गया है कि ISDATE()
SQL सर्वर 2012 ISDATE()
रिटर्न 1 अगर अभिव्यक्ति कोई मान्य दिनांक, समय, या datetime मूल्य है, अन्यथा, 0
तो यह नीचे दिए गए उदाहरण में 0
क्यों लौटा रहा है?
DECLARE @DT VARCHAR(30) = '1/4/1752'
SELECT
ISDATE(@DT),
TRY_CONVERT(DATE, @DT, 101),
TRY_CONVERT(DATETIME, @DT),
TRY_CAST(@DT as DATE),
TRY_CAST(@DT AS DATETIME)
रिटर्न
0 1752-01-04 NULL 1752-01-04 NULL
1753 को तारीख बदलें और ...
1 1753-01-04 1753-01-04 00:00:00.000 1753-01-04 1753-01-04 00:00:00.000
select ISDATE('17521231'), ISDATE('17530101') gives
0 1
ध्यान दें कि '17520401' * एक वैध' DATETIME2' मान है, लेकिन * वैध * डेटाटाइम मान नहीं है, इसलिए 'ISDATE' अभी भी 0 लौटाता है। गॉर्डन द्वारा सुझाए गए अनुसार 'TRY_CONVERT' दृष्टिकोण इस मामले को कवर करेगा सही भी (और दस्तावेज़ीकरण को शायद tweaking की आवश्यकता है - '17520401' मान्य 'DATE' है, लेकिन जाहिर है," वैध दिनांक मान ", जो गलत है।)' ISDATE' का व्यवहार स्वयं संभवतः नहीं बदला जाएगा पिछड़ा संगतता चिंताओं। –
http://stackoverflow.com/a/3310588/2975396 – TheGameiswar
मुझे लगता है कि यह एक डुप्लिकेट नहीं है, दस्तावेज़ समय के लिए दस्तावेज राज्यों की सीमा 1753-01-01 99 99-12-31 के माध्यम से है, जबकि दिनांक डेटा की सीमा है 0001-01-01 99 99-12-31. के माध्यम से और यह 'रिटर्न 1 लौटाता है यदि अभिव्यक्ति वैध दिनांक, समय या डेटाटाइम मान है; अन्यथा, 0.' – TheGameiswar