2010-06-17 17 views
6

में अमान्य तिथियां पाएं मेरे पास 300,000 पंक्तियां हैं; कॉलम में से एक वर्चर() है लेकिन इसमें वास्तव में एक तिथि xx/xx/xxxx या x/x/xxxx या इसी तरह की है।SQL सर्वर 2008

SELECT CAST(MyDate as Datetime) FROM MyTable 

समस्या यह है कि यह मुझे नहीं बताता है जो पंक्ति में ...

मैं एक त्रुटि परीक्षण द्वारा "मैन्युअल" अद्यतन की एक श्रृंखला को मार डाला और प्रदर्शन किया है है: लेकिन निम्न परीक्षण को क्रियान्वित करने में कोई त्रुटि पैदावार उनको ठीक करने के लिए सरल अपडेट, लेकिन कुछ अजीब मान होने चाहिए जिन्हें या तो हटाया जाना चाहिए या तय किया जाना चाहिए।

UPDATE MyTable SET MyDate = REPLACE(MyDate, '/000','/200') FROM MyTable WHERE MyDate like ('%/000%’) 
UPDATE MyTable SET MyDate = REPLACE(MyDate, '/190','/199') FROM MyTable WHERE MyDate like ('%/190%’) 

यह काफी कुछ अजीब पंक्तियों 01/01/0003 और इस तरह की तरह दिनांकों था तय:

उदाहरण के लिए मैं एक साधारण परीक्षण है कि लगभग 40 पंक्तियों तय प्रदर्शन किया। (तिथियां 1 99 8 से 2010 तक हैं)।

हालांकि, मैं जानना चाहता हूं जो पंक्तियां उपर्युक्त चयन में विफल रही हैं।

उनको प्रिंट करने का सबसे अच्छा तरीका क्या होगा ताकि मैं उन्हें हटा सकूं, उन्हें संपादित कर सकूं या देख सकूं कि क्या करना है? धन्यवाद।

उत्तर

19
SELECT 
    * 
FROM 
    MyTable 
WHERE 
    ISDATE(MyDate) = 0 
+0

धन्यवाद, यह किया। –

+0

एक्सेस में भी अच्छा काम करता है - धन्यवाद। –

4

क्या आपने ISDATE फ़ंक्शन का प्रयास किया था?

+0

मैं इसके बारे में भूल गया था, लेकिन यह काम किया। धन्यवाद। –

0

IsDate के साथ सावधान। मेरे पास हजारों की एक मेज में 1 खराब रिकॉर्ड है। यह कहता है कि 8201-11-30 मान्य तिथि है। IsDate एक वर्ष सीमा होना चाहिए।

+0

8201-11-30 CONVERT (दिनांक, '8201-11-30') सफल होने के बाद से एक वैध तिथि है। यह भी तर्कसंगत मान्य है ... मानते हुए कि हम नहीं बदलते हैं कि हम अगले 6000 वर्षों में तारीख को कैसे ट्रैक करते हैं। एक साल की सीमा आवेदन विशिष्ट होगी ... एक सत्यापन नियम। – steve

0

ISDATE हमेशा काम नहीं कर रहा प्रतीत होता है।

निम्नलिखित रिटर्न 1 एसक्यूएल सर्वर में 2008 R2 Select ISDATE('04- December 20')

लेकिन तारीख करने के लिए एक ही मूल्य कास्ट करने के लिए असफल हो जायेगी कोशिश कर रहा। Select cast('04- December 20' as date)

रूपांतरण स्ट्रिंग से तारीख और/या समय को परिवर्तित करते समय रूपांतरण विफल रहा।