मारियाडीबी में, YEARWEEK() एक अंतर्निहित दिनांक और समय फ़ंक्शन है जो किसी दिए गए दिनांक के लिए वर्ष और सप्ताह लौटाता है।
यह दो तर्क स्वीकार करता है; जिस तिथि से आप वर्ष और सप्ताह निकालना चाहते हैं, और परिणाम में उपयोग करने के लिए मोड निर्दिष्ट करने के लिए एक वैकल्पिक मोड तर्क।
यह सप्ताह को 0 . श्रेणी में एक संख्या के रूप में लौटाता है करने के लिए 53 या 1 करने के लिए 53 , उपयोग किए जा रहे मोड के आधार पर। साथ ही, परिणाम का वर्ष वर्ष के पहले और अंतिम सप्ताह के लिए दिनांक तर्क में वर्ष से भिन्न हो सकता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
YEARWEEK(date), YEARWEEK(date,mode) जिसे इस तरह भी व्यक्त किया जा सकता है:
YEARWEEK(date[,mode])
जहां date वर्ष और सप्ताह प्राप्त करने के लिए दिनांक अभिव्यक्ति है, और mode एक वैकल्पिक तर्क है जो आपको उपयोग करने के लिए एक मोड निर्दिष्ट करने देता है।
मोड
वैकल्पिक mode तर्क निर्धारित करता है कि सप्ताह रविवार या सोमवार को शुरू होता है या नहीं, और वापसी मूल्य 0 से सीमा में होना चाहिए या नहीं करने के लिए 53 या 1 . से करने के लिए 53 ।
मोड तर्क निम्न में से कोई भी हो सकता है:
| मोड | <थ>सप्ताह का पहला दिनरेंज | सप्ताह 1 पहला सप्ताह है... | |
|---|---|---|---|
| 0 | रविवार | 0-53 | इस वर्ष में रविवार |
| 1 | सोमवार | 0-53 | इस वर्ष 3 दिन से अधिक |
| 2 | रविवार | 1-53 | इस वर्ष में रविवार |
| 3 | सोमवार | 1-53 | इस वर्ष 3 दिन से अधिक (आईएसओ 8601:1988 के अनुसार) |
| 4 | रविवार | 0-53 | इस वर्ष 3 दिन से अधिक |
| 5 | सोमवार | 0-53 | इस वर्ष में एक सोमवार |
| 6 | रविवार | 1-53 | इस वर्ष 3 दिन से अधिक |
| 7 | सोमवार | 1-53 | इस वर्ष में एक सोमवार |
यदि मोड तर्क को छोड़ दिया जाता है, तो default_week_format . का मान सिस्टम चर का उपयोग किया जाता है।
आइए मेरे default_week_format . के मान की जांच करें सिस्टम वैरिएबल:
SELECT @@default_week_format; परिणाम:
+-----------------------+ | @@default_week_format | +-----------------------+ | 0 | +-----------------------+
अब, जब मैं YEARWEEK() चलाता हूं एक मोड निर्दिष्ट किए बिना, यह मोड का उपयोग करेगा 0 ।
उदाहरण
यहां YEARWEEK() पर कॉल करने का एक उदाहरण दिया गया है मोड निर्दिष्ट किए बिना:
SELECT YEARWEEK('2030-01-01'); परिणाम:
+------------------------+
| YEARWEEK('2030-01-01') |
+------------------------+
| 202952 |
+------------------------+ इस मामले में परिणामी वर्ष और सप्ताह पिछले वर्ष के हैं।
मोड निर्दिष्ट करें
यहां मोड निर्दिष्ट करने का एक उदाहरण दिया गया है:
SELECT YEARWEEK('2030-01-01', 1); परिणाम:
+---------------------------+
| YEARWEEK('2030-01-01', 1) |
+---------------------------+
| 203001 |
+---------------------------+ इस बार, परिणाम अलग है।
आइए एक ही तारीख के लिए सभी मोड देखें:
SELECT
YEARWEEK('2030-01-01', 0),
YEARWEEK('2030-01-01', 1),
YEARWEEK('2030-01-01', 2),
YEARWEEK('2030-01-01', 3),
YEARWEEK('2030-01-01', 4),
YEARWEEK('2030-01-01', 5),
YEARWEEK('2030-01-01', 6),
YEARWEEK('2030-01-01', 7); परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
YEARWEEK('2030-01-01', 0): 202952
YEARWEEK('2030-01-01', 1): 203001
YEARWEEK('2030-01-01', 2): 202952
YEARWEEK('2030-01-01', 3): 203001
YEARWEEK('2030-01-01', 4): 203001
YEARWEEK('2030-01-01', 5): 202953
YEARWEEK('2030-01-01', 6): 203001
YEARWEEK('2030-01-01', 7): 202953 डेटाटाइम मान
YEARWEEK() फ़ंक्शन डेटाटाइम मानों के साथ भी काम करता है:
SELECT YEARWEEK('2030-08-01 10:30:45'); परिणाम:
+---------------------------------+
| YEARWEEK('2030-08-01 10:30:45') |
+---------------------------------+
| 203030 |
+---------------------------------+ संख्यात्मक तिथियां
तिथियों को एक संख्या के रूप में पारित करना भी संभव है, जब तक कि यह एक तिथि के रूप में समझ में आता है।
उदाहरण
SELECT YEARWEEK(20301125); परिणाम:
+--------------------+ | YEARWEEK(20301125) | +--------------------+ | 203047 | +--------------------+
या निम्नलिखित भी (जो दो अंकों वाले वर्ष का उपयोग करता है):
SELECT YEARWEEK(301125); परिणाम:
+------------------+ | YEARWEEK(301125) | +------------------+ | 203047 | +------------------+
लेकिन इसे एक तारीख के रूप में समझना चाहिए। अगर मैं दिन के हिस्से को अमान्य दिन में बढ़ा दूं तो क्या होगा:
SELECT YEARWEEK(20301135); परिणाम:
+--------------------+ | YEARWEEK(20301135) | +--------------------+ | NULL | +--------------------+ 1 row in set, 1 warning (0.000 sec)
यह null लौटा एक चेतावनी के साथ।
आइए चेतावनी देखें:
SHOW WARNINGS; परिणाम:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
अन्य सीमांकक
आप तिथि के लिए अन्य सीमांकक का उपयोग कर सकते हैं। जब तारीखों पर सीमांकक की बात आती है तो मारियाडीबी काफी क्षमाशील है। यहां कुछ मान्य उदाहरण दिए गए हैं:
SELECT
YEARWEEK('2030/06/25'),
YEARWEEK('2030,06,25'),
YEARWEEK('2030:06:25'),
YEARWEEK('2030;06!25'); परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
YEARWEEK('2030/06/25'): 203025
YEARWEEK('2030,06,25'): 203025
YEARWEEK('2030:06:25'): 203025
YEARWEEK('2030;06!25'): 203025 वर्तमान तिथि
हम NOW() pass पास कर सकते हैं वर्तमान तिथि का उपयोग करने के लिए डेटाटाइम तर्क के रूप में:
SELECT
NOW(),
YEARWEEK(NOW()); परिणाम:
+---------------------+-----------------+ | NOW() | YEARWEEK(NOW()) | +---------------------+-----------------+ | 2021-05-17 09:08:23 | 202120 | +---------------------+-----------------+
अमान्य तर्क
जब कोई अमान्य तर्क पारित किया गया, YEARWEEK() रिटर्न null :
SELECT YEARWEEK('2030-65-78'); परिणाम:
+------------------------+
| YEARWEEK('2030-65-78') |
+------------------------+
| NULL |
+------------------------+
1 row in set, 1 warning (0.000 sec) आइए चेतावनी दिखाते हैं:
SHOW WARNINGS; परिणाम:
+---------+------+----------------------------------------+ | Level | Code | Message | +---------+------+----------------------------------------+ | Warning | 1292 | Incorrect datetime value: '2030-65-78' | +---------+------+----------------------------------------+
अनुपलब्ध तर्क
कॉलिंग YEARWEEK() तर्कों की गलत संख्या के साथ, या कोई तर्क पारित किए बिना, एक त्रुटि उत्पन्न होती है:
SELECT YEARWEEK(); परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'YEARWEEK'
और दूसरा उदाहरण:
SELECT YEARWEEK('2030-12-10', 1, 2); परिणाम:
ERROR 1582 (42000): Incorrect parameter count in the call to native function 'YEARWEEK'