Ketahuilah bahwa ada perbedaan dalam apa yang dianggap sebagai angka minggu yang benar, tergantung pada budayanya. Jumlah minggu tergantung pada beberapa asumsi yang berbeda dari satu negara ke negara lain, lihat artikel Wikipedia tentang masalah tersebut. Ada standar ISO (ISO 8601) yang berlaku untuk angka minggu.
Server SQL terintegrasi DATEPART()
fungsi tidak selalu melakukan Hal yang Benar. SQL Server mengasumsikan hari 1 dari minggu 1 adalah 1 Januari, untuk banyak aplikasi yang salah.
Menghitung angka minggu dengan benar bukanlah hal yang sepele, dan penerapan yang berbeda dapat ditemukan di web. Misalnya, ada UDF yang menghitung angka minggu ISO dari tahun 1930-2030, menjadi salah satu di antara banyak lainnya. Anda harus memeriksa apa yang cocok untuk Anda.
Yang ini dari Books Online (meskipun Anda mungkin ingin menggunakan jawaban Jonas Lincoln, versi BOL tampaknya salah):
CREATE FUNCTION ISOweek (@DATE DATETIME)
RETURNS INT
AS
BEGIN
DECLARE @ISOweek INT
SET @ISOweek = DATEPART(wk,@DATE)
+1
-DATEPART(wk,CAST(DATEPART(yy,@DATE) AS CHAR(4))+'0104')
-- Special cases: Jan 1-3 may belong to the previous year
IF (@ISOweek=0)
SET @ISOweek = dbo.ISOweek(CAST(DATEPART(yy,@DATE) - 1
AS CHAR(4))+'12'+ CAST(24+DATEPART(DAY,@DATE) AS CHAR(2)))+1
-- Special case: Dec 29-31 may belong to the next year
IF ((DATEPART(mm,@DATE)=12) AND
((DATEPART(dd,@DATE)-DATEPART(dw,@DATE))>= 28))
SET @ISOweek=1
RETURN(@ISOweek)
END
GO