इस बात से अवगत रहें कि संस्कृति के आधार पर, जिसे सही सप्ताह संख्या माना जाता है, उसमें अंतर होता है। सप्ताह की संख्या कुछ मान्यताओं पर निर्भर करती है जो अलग-अलग देशों में भिन्न होती हैं, इस मामले पर विकिपीडिया लेख देखें। एक आईएसओ मानक (आईएसओ 8601) है जो सप्ताह की संख्याओं पर लागू होता है।
SQL सर्वर एकीकृत DATEPART()
जरूरी नहीं कि फंक्शन द राइट थिंग ही करे। SQL सर्वर मानता है कि सप्ताह 1 का दिन 1 जनवरी 1 होगा, कई अनुप्रयोगों के लिए जो गलत है।
सप्ताह की संख्याओं की सही गणना करना गैर-तुच्छ है, और विभिन्न कार्यान्वयन वेब पर पाए जा सकते हैं। उदाहरण के लिए, एक यूडीएफ है जो 1930-2030 तक आईएसओ सप्ताह संख्याओं की गणना करता है, जो कई अन्य में से एक है। आपको जांचना होगा कि आपके लिए क्या काम करता है।
यह ऑनलाइन बुक्स से है (हालांकि आप शायद जोनास लिंकन के उत्तर से एक का उपयोग करना चाहते हैं, बीओएल संस्करण गलत लगता है):
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