DATETIME
. के लिए ISO-8601 (पुराना प्रकार) किसी तरह "टूटा" या "अनुकूलित" है (इस पर निर्भर करता है कि आप इसे बग या फीचर के रूप में देखते हैं) - आपको YYYYMMDD
का उपयोग करने की आवश्यकता है (बिना कोई भी डैश) भाषा सेटिंग के बावजूद इसे काम करने के लिए।
DATE
के लिए या DATETIME2(n)
डेटाटाइप, इसे ठीक कर दिया गया है और "उचित" ISO-8601 प्रारूप YYYY-MM-DD
हमेशा सही ढंग से व्याख्या की जाएगी।
-- OK because of "adapted" ISO-8601
SET LANGUAGE GERMAN;
DECLARE @dt DATETIME='20170113';
SELECT @dt;
SELECT CAST('20170113' AS DATETIME);
SELECT CONVERT(DATETIME, '20170113');
-- OK because of DATETIME2(n)
SET LANGUAGE GERMAN;
DECLARE @dt2 DATETIME2(0) = '2017-01-13';
SELECT @dt2;
SELECT CAST('2017-01-13' AS DATETIME2(0));
SELECT CONVERT(DATETIME2(0), '2017-01-13');
यह DATETIME
की एक विचित्रता है टाइप करें (और केवल एक ही नहीं ....) - बस इसे पंजीकृत करें, इसके बारे में जानें - और आगे बढ़ें (मतलब:DATETIME
का उपयोग न करें अब और - DATE
का उपयोग करें या DATETIME2(n)
इसके बजाय - साथ काम करना बहुत अच्छा है!) :-)