Oke jadi saya punya laporan yang membandingkan minggu ini vs minggu lalu dan pelanggan kami memperhatikan bahwa data mereka "funky". Setelah diselidiki lebih lanjut, kami mendapati bahwa itu tidak berjalan berminggu-minggu dengan benar sesuai dengan standar ISO. Saya menjalankan skrip ini sebagai ujian.
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')
Saat dijalankan saya mendapat hasil ini.
Saya pikir ini aneh dan jadi saya melakukan penggalian lagi dan menemukan bahwa SQL Server menghitung 1 Januari sebagai minggu pertama tahun itu di mana ISO menghitung Minggu pertama pada Januari sebagai minggu pertama tahun ini.
Pertanyaannya kemudian menjadi dua kali lipat. Pertanyaan 1 mengapa ini? Pertanyaan 2 apakah ada cara untuk mengubah ini jadi saya tidak harus mengubah semua kode saya untuk digunakan di ISO_Week
mana-mana?