ठीक है तो मेरे पास एक रिपोर्ट है जो इस सप्ताह बनाम पिछले सप्ताह की तुलना करती है और हमारे ग्राहक ने देखा कि उनका डेटा "कायरतापूर्ण" था। आगे की जांच में हमने पाया कि यह आईएसओ मानकों के अनुसार सही ढंग से सप्ताह नहीं कर रहा था। मैंने इस स्क्रिप्ट को टेस्ट केस के रूप में चलाया।
SET DATEFIRST 1
SELECT DATEPART(WEEK, '3/26/13')
, DATEPART(WEEK, '3/27/12')
, DATEPART(WEEK, '3/20/12')
, DATEPART(WEEK, '1/2/12')
SELECT DATEPART(ISO_WEEK, '3/26/13')
, DATEPART(ISO_WEEK, '3/27/12')
, DATEPART(ISO_WEEK, '3/20/12')
, DATEPART(ISO_WEEK, '1/2/12')
जब मैं चला तो मुझे ये परिणाम मिले।
मैंने सोचा कि यह अजीब था और इसलिए मैंने कुछ और खुदाई की और पाया कि एसक्यूएल सर्वर 1 जनवरी को वर्ष के पहले सप्ताह के रूप में गिना जाता है जहां आईएसओ जनवरी में पहले रविवार को वर्ष के पहले सप्ताह के रूप में गिना जाता है।
सवाल तो दो गुना होने से खत्म हो जाता है। प्रश्न 1 यह क्यों है? प्रश्न 2 क्या इसे बदलने का कोई तरीका है इसलिए मुझे अपने सभी कोड को ISO_Week
हर जगह उपयोग करने के लिए संशोधित नहीं करना है?