मारियाडीबी में, WEEK()
एक अंतर्निहित दिनांक और समय फ़ंक्शन है जो किसी दिए गए दिनांक अभिव्यक्ति से सप्ताह लौटाता है।
यह दो तर्क स्वीकार करता है; जिस तिथि से आप सप्ताह निकालना चाहते हैं, और परिणाम में उपयोग करने के लिए मोड निर्दिष्ट करने के लिए एक वैकल्पिक मोड तर्क।
यह सप्ताह को 0
. श्रेणी में एक संख्या के रूप में लौटाता है करने के लिए 53
या 1
करने के लिए 53
, उपयोग किए जा रहे मोड के आधार पर।
सिंटैक्स
वाक्य रचना इस प्रकार है:
WEEK(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 | +-----------------------+
अब, जब मैं WEEK()
चलाता हूं एक मोड निर्दिष्ट किए बिना, यह मोड का उपयोग करेगा 0
।
उदाहरण
यहां WEEK()
पर कॉल करने का एक उदाहरण दिया गया है मोड निर्दिष्ट किए बिना:
SELECT WEEK('2030-01-01');
परिणाम:
+--------------------+ | WEEK('2030-01-01') | +--------------------+ | 0 | +--------------------+
मोड निर्दिष्ट करें
यहां मोड निर्दिष्ट करने का एक उदाहरण दिया गया है:
SELECT WEEK('2030-01-01', 1);
परिणाम:
+-----------------------+ | WEEK('2030-01-01', 1) | +-----------------------+ | 1 | +-----------------------+
इस बार, परिणाम 1
. है 0
. के बजाय .
आइए एक ही तारीख के लिए सभी मोड देखें:
SELECT
WEEK('2030-01-01', 0),
WEEK('2030-01-01', 1),
WEEK('2030-01-01', 2),
WEEK('2030-01-01', 3),
WEEK('2030-01-01', 4),
WEEK('2030-01-01', 5),
WEEK('2030-01-01', 6),
WEEK('2030-01-01', 7);
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
WEEK('2030-01-01', 0): 0 WEEK('2030-01-01', 1): 1 WEEK('2030-01-01', 2): 52 WEEK('2030-01-01', 3): 1 WEEK('2030-01-01', 4): 1 WEEK('2030-01-01', 5): 0 WEEK('2030-01-01', 6): 1 WEEK('2030-01-01', 7): 53
डेटाटाइम मान
WEEK()
फ़ंक्शन डेटाटाइम मानों के साथ भी काम करता है:
SELECT WEEK('2030-08-01 10:30:45');
परिणाम:
+-----------------------------+ | WEEK('2030-08-01 10:30:45') | +-----------------------------+ | 30 | +-----------------------------+
संख्यात्मक तिथियां
तिथियों को एक संख्या के रूप में पारित करना भी संभव है, जब तक कि यह एक तिथि के रूप में समझ में आता है।
उदाहरण
SELECT WEEK(20301125);
परिणाम:
+----------------+ | WEEK(20301125) | +----------------+ | 47 | +----------------+
या निम्नलिखित भी (जो दो अंकों वाले वर्ष का उपयोग करता है):
SELECT WEEK(301125);
परिणाम:
+--------------+ | WEEK(301125) | +--------------+ | 47 | +--------------+
लेकिन इसे एक तारीख के रूप में समझना चाहिए। अगर मैं दिन के हिस्से को अमान्य दिन में बढ़ा दूं तो क्या होगा:
SELECT WEEK(20301135);
परिणाम:
+----------------+ | WEEK(20301135) | +----------------+ | NULL | +----------------+ 1 row in set, 1 warning (0.001 sec)
यह null
लौटा एक चेतावनी के साथ।
आइए चेतावनी देखें:
SHOW WARNINGS;
परिणाम:
+---------+------+--------------------------------------+ | Level | Code | Message | +---------+------+--------------------------------------+ | Warning | 1292 | Incorrect datetime value: '20301135' | +---------+------+--------------------------------------+
अन्य सीमांकक
आप तिथि के लिए अन्य सीमांकक का उपयोग कर सकते हैं। जब तारीखों पर सीमांकक की बात आती है तो मारियाडीबी काफी क्षमाशील है। यहां कुछ मान्य उदाहरण दिए गए हैं:
SELECT
WEEK('2030/06/25'),
WEEK('2030,06,25'),
WEEK('2030:06:25'),
WEEK('2030;06!25');
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
WEEK('2030/06/25'): 25 WEEK('2030,06,25'): 25 WEEK('2030:06:25'): 25 WEEK('2030;06!25'): 25
वर्तमान तिथि
हम NOW()
pass पास कर सकते हैं वर्तमान तिथि का उपयोग करने के लिए डेटाटाइम तर्क के रूप में:
SELECT
NOW(),
WEEK(NOW());
परिणाम:
+---------------------+-------------+ | NOW() | WEEK(NOW()) | +---------------------+-------------+ | 2021-05-17 08:36:12 | 20 | +---------------------+-------------+
अमान्य तर्क
अमान्य तर्क पारित होने पर, WEEK()
रिटर्न null
:
SELECT WEEK('2030-65-78');
परिणाम:
+--------------------+ | WEEK('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' | +---------+------+----------------------------------------+
अनुपलब्ध तर्क
कॉलिंग WEEK()
तर्कों की गलत संख्या के साथ, या कोई तर्क पारित किए बिना, एक त्रुटि उत्पन्न होती है:
SELECT WEEK();
परिणाम:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से संबंधित मैनुअल की जांच करें।
और दूसरा उदाहरण:
SELECT WEEK('2030-12-10', 1, 2);
परिणाम:
ERROR 1064 (42000): You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near ')' at line 1पर ' 2)' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से मेल खाने वाले मैनुअल की जांच करें।