এটি কেবল নথিভুক্ত আচরণ। আমি মনে করি না যে কেউ সেটিংসের সাথে গণ্ডগোল করেছে।
এমএসডিএন-তে ডেটা টাইপের নজির দেখুন ।
যখন কোনও অপারেটর বিভিন্ন ডেটা ধরণের দুটি এক্সপ্রেশনকে একত্রিত করে, তখন ডেটা টাইপ অগ্রাধিকারের নিয়মগুলি উল্লেখ করে যে নিম্নতর অগ্রাধিকার সহ ডেটা টাইপ উচ্চতর অগ্রাধিকারের সাথে ডেটা টাইপে রূপান্তরিত হয়।
মন্তব্যে উল্লিখিত হিসাবে খালি স্ট্রিংটি কোনও সংখ্যার প্রকারে 0 তে রূপান্তরিত হয় এবং 1900-01-01 00: 00: 00.000 এ তারিখে রূপান্তরিত হয়।
সম্পাদনা: আমি মনে করি আপনার আসল সমস্যাটি হ'ল আপনার নকশাটি যাতে আপনাকে আলাদা ডেটা টাইপের ক্ষেত্রে যোগ দিতে হয়। এটিকে ঘুরে দেখার একমাত্র উপায় হ'ল আপনার যোগদানের ধারাটিতে রূপান্তর করা যা ক্যোয়ারী কার্য সম্পাদনকে ক্ষতিগ্রস্থ করবে। মূল সমস্যাটি সম্ভবত স্কিমা ডিজাইনের সাথে
সম্পাদনা: আড্ডায় সরানো হয়েছে এমন মন্তব্যে প্রচুর আলোচনা হয়েছিল। তবে অযৌক্তিক মনে হতে পারে, খালি স্ট্রিংটিকে অন্য ডেটা ধরণের রূপান্তর করা স্বেচ্ছাসেবী মানগুলি তৈরি করে।
এই কোড:
SELECT CONVERT(int, '')
SELECT CONVERT(float, '')
SELECT CONVERT(date, '')
SELECT CONVERT(datetime, '')
এই আউটপুট উত্পাদন:
0
0
1900-01-01
1900-01-01 00:00:00.000
আপনি তখন আশা করতে পারেন যে এই আচরণটি অন্যান্য পূর্ববর্তী ডেটাটাইপগুলির মধ্যে সামঞ্জস্যপূর্ণ এবং প্রত্যাশা করতে পারে যে 0 এ তারিখে রূপান্তর করা একই স্বেচ্ছাচারিত মান উত্পন্ন করবে তবে তা হয় না।
SELECT CONVERT(date, 0)
উত্পাদন
ডেটা টাইপ int থেকে তারিখে স্পষ্ট রূপান্তর অনুমোদিত নয়।
কারণ এটি কোনও সমর্থিত রূপান্তর নয়
যখন
SELECT CONVERT(datetime, 0)
রিটার্নস
জানুয়ারী, 01 1900 00:00:00 |
হ্যাঁ, এটি অদ্ভুত এবং স্বেচ্ছাসেবী, তবে আসলে নথিভুক্ত এবং ব্যাখ্যাযোগ্য।