कभी-कभी आपको दो अलग-अलग डीबीएमएस कार्यक्रमों को एकीकृत करते समय थोड़ा अतिरिक्त काम करने की आवश्यकता होती है। यहां एक समाधान दिया गया है जिसका उपयोग हम उस ग्राहक की मदद करने के लिए करते हैं जिसे SQL सर्वर को MySQL के साथ एकीकृत करने का प्रयास करते समय समस्या हो रही थी।
MySQL TIMESTAMP कॉलम के साथ काम करते समय ग्राहक को SQL सर्वर में निम्न त्रुटि मिल रही थी।
select * from openquery(MYSQL, 'select lastupdated from carriers') Error converting data type DBTYPE_DBTIMESTAMP to datetime2.
इसका मूल कारण यह था कि ग्राहक के MySQL डेटाबेस में अमान्य DATE, DATETIME, या TIMESTAMP मानों को स्वचालित रूप से शून्य में परिवर्तित किया जा रहा था (यानी '0000-00-00' या '0000-00-00 00:00:00') . SQL सर्वर में एक शून्य महीना या दिन मान्य दिनांक या समय संयोजन नहीं है। इसे हल करने के लिए, हमने सबसे पहले MySQL से वापस आने वाले कॉलम को char(20) में बदल दिया:
select * from openquery(MYSQL, 'select cast(lastupdated as char(20) ) as lastupdated from carriers')
कॉलम का मान '0000-00-00000:00:00' फिर NULL में बदल दिया गया:
select case lastupdated when '0000-00-00 00:00:00' then null else lastupdated end as lastupdated from openquery(MYSQL, 'select cast(lastupdated as char(20) ) as lastupdated from carriers')
अंत में, "lastupdated" कॉलम को datetime2 पर वापस लाने के लिए, हम दौड़े:
select cast(x.lastupdated as datetime2) as lastupdated from ( select case lastupdated when '0000-00-00 00:00:00' then null else lastupdated end as lastupdated from openquery(MYSQL, 'select cast(lastupdated as char(20) ) as lastupdated from carriers limit 100') ) x