โอเคฉันมีรายงานที่ทำเปรียบเทียบสัปดาห์นี้กับสัปดาห์ที่แล้วและลูกค้าของเราสังเกตเห็นว่าข้อมูลของพวกเขานั้น "ขี้ขลาด" จากการตรวจสอบเพิ่มเติมเราพบว่ามันไม่ได้ทำอย่างถูกต้องเป็นสัปดาห์ตามมาตรฐาน ISO ฉันรันสคริปต์นี้เป็นกรณีทดสอบ
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')
เมื่อรันฉันจะได้ผลลัพธ์เหล่านี้
ฉันคิดว่านี่เป็นเรื่องแปลกและดังนั้นฉันจึงขุดเพิ่มเติมและพบว่า SQL Server นับ 1 มกราคมเป็นสัปดาห์แรกของปีที่ ISO นับวันอาทิตย์แรกของเดือนมกราคมเป็นสัปดาห์แรกของปี
คำถามนั้นจบลงด้วยการเป็นสองเท่า คำถามที่ 1 ทำไมนี่คืออะไร คำถามที่ 2 มีวิธีใดบ้างที่จะเปลี่ยนแปลงสิ่งนี้ดังนั้นฉันไม่ต้องแก้ไขโค้ดทั้งหมดเพื่อใช้ในISO_Week
ทุกที่ใช่ไหม