Sqlserver
 sql >> डेटाबेस >  >> RDS >> Sqlserver

SQL सर्वर (T-SQL) में किसी दिनांक से ISO सप्ताह संख्या लौटाएँ

यदि आपको SQL सर्वर में किसी दिनांक से ISO सप्ताह संख्या निकालने की आवश्यकता है, तो आप iso_week का उपयोग कर सकते हैं DATEPART() . को कॉल करते समय तर्क समारोह। आप वैकल्पिक रूप से isowk . का उपयोग कर सकते हैं या isoww एक ही काम करने के लिए तर्क।

"ISO सप्ताह" के द्वारा, मैं ISO 8601 दिनांक और समय मानक की बात कर रहा हूँ।

आईएसओ सप्ताह सोमवार को शुरू होते हैं और एक वर्ष के पहले सप्ताह में उस वर्ष के 4 जनवरी होते हैं। इसलिए, संभव है कि जनवरी की शुरुआत की तारीखें पिछले साल के 52वें या 53वें सप्ताह का हिस्सा हों, और दिसंबर के अंत की तारीखें अगले साल के पहले सप्ताह का हिस्सा हों।

इसका मतलब यह है कि जब आप किसी तिथि से सप्ताह की संख्या निकालते हैं, तो आप ग्रेगोरियन कैलेंडर का उपयोग कर रहे हैं या आईएसओ 8601 दिनांक और समय मानक के आधार पर अलग-अलग परिणाम प्राप्त कर सकते हैं।

उदाहरण

DECLARE @date date = '2021-01-01';
SELECT DATEPART(iso_week, @date);

परिणाम:

53

इस मामले में, तारीख 1 जनवरी, 2021 है, लेकिन ISO के लिहाज़ से यह 2020 का 53वां हफ़्ता है।

ग्रेगोरियन से तुलना करें

ग्रेगोरियन सप्ताह से इसकी तुलना करने के लिए यहां एक और उदाहरण दिया गया है।

DECLARE @date date = '2021-01-01';
SELECT 
  DATEPART(week, @date) AS week,
  DATEPART(iso_week, @date) AS iso_week;

परिणाम:

+--------+------------+
 | week   | iso_week   |
 |--------+------------|
 | 1      | 53         |
 +--------+------------+ 

इसलिए हम देख सकते हैं कि हम ग्रेगोरियन कैलेंडर या आईएसओ मानक का उपयोग कर रहे हैं या नहीं, इस पर निर्भर करते हुए एक ही तारीख में एक अलग सप्ताह संख्या हो सकती है।

हम पिछले वर्ष के अंत के निकट किसी तिथि के साथ भी ऐसा ही कर सकते हैं।

DECLARE @date date = '2020-12-27';
SELECT 
  DATEPART(week, @date) AS week,
  DATEPART(iso_week, @date) AS iso_week;

परिणाम:

+--------+------------+
 | week   | iso_week   |
 |--------+------------|
 | 53     | 52         |
 +--------+------------+ 

वैकल्पिक तर्क

जैसा कि बताया गया है, वैकल्पिक रूप से isowk . का उपयोग कर सकते हैं या isoww आईएसओ सप्ताह संख्या वापस करने के लिए।

DECLARE @date date = '2021-01-01';
SELECT 
    DATEPART(iso_week, @date) AS iso_week,
    DATEPART(isowk, @date) AS isowk,
    DATEPART(isoww, @date) AS isoww;

परिणाम:

+------------+---------+---------+
 | iso_week   | isowk   | isoww   |
 |------------+---------+---------|
 | 53         | 53      | 53      |
 +------------+---------+---------+ 

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मान को अल्पविराम से अलग करने के लिए COALESCE फ़ंक्शन का उपयोग करना

  2. SQL सर्वर में NULLIF () कैसे काम करता है

  3. SQL सर्वर में "पंक्ति संस्करण" क्या है?

  4. SQL सर्वर varchar कॉलम से अजीब वर्ण (A टोपी के साथ) निकालें

  5. अनुक्रम बनाम पहचान