MySQL में, YEAR()
एक अंतर्निहित दिनांक और समय फ़ंक्शन है जो किसी दिए गए दिनांक अभिव्यक्ति से वर्ष लौटाता है।
यह वर्ष को 1000
. श्रेणी में एक संख्या के रूप में लौटाता है करने के लिए 9999
. शून्य तिथियों के लिए, यह 0
. लौटा सकता है या NULL
आपके sql_mode
. में मानों के आधार पर एक चेतावनी के साथ ।
सिंटैक्स
वाक्य रचना इस प्रकार है:
YEAR(date)
जहां date
वर्ष प्राप्त करने के लिए दिनांक अभिव्यक्ति है।
उदाहरण
यहां एक उदाहरण दिया गया है:
SELECT YEAR('2045-12-10');
परिणाम:
2045
डेटाटाइम मान
यह डेटाटाइम मानों के साथ भी काम करता है:
SELECT YEAR('2045-12-10 18:52:17');
परिणाम:
2045
शून्य तिथियां
MySQL प्रलेखन के अनुसार, शून्य तिथियों का परिणाम 0
. होता है . हालांकि, वास्तविक परिणाम आपके sql_mode
. के मान पर निर्भर करेगा सिस्टम चर।
डिफ़ॉल्ट रूप से, शून्य तिथियों की अनुमति नहीं है, और इसलिए, निम्न कार्य करने से NULL
उत्पन्न होता है चेतावनी के साथ:
SELECT YEAR('0000-00-00');
परिणाम:
+----------------------+| वर्ष ('0000-00-00') |+----------------------+| NULL |+-------------------+1 पंक्ति सेट में, 1 चेतावनी (0.00 सेकंड)
और ये रही चेतावनी:
show warnings;
परिणाम:
+------+---------- -----------+| स्तर | कोड | संदेश |+------------+----------+---------------------------- ----------+| चेतावनी | 1292 | गलत डेटाटाइम मान:'0000-00-00' |+---------+----------+-------------------------- ------------------------+
मुझे यह चेतावनी इसलिए मिली क्योंकि मेरा sql_mode
सिस्टम वैरिएबल में NO_ZERO_DATE
शामिल है और NO_ZERO_IN_DATE
:
SELECT @@SESSION.sql_mode;
परिणाम:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
आइए मेरा sql_mode
रीसेट करें उन मानों के बिना:
SET SESSION sql_mode = 'ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION';
SELECT @@SESSION.sql_mode;
परिणाम:
ONLY_FULL_GROUP_BY,STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_ENGINE_SUBSTITUTION
अब YEAR()
चलाते हैं शून्य तिथि के साथ फिर से कार्य करें:
SELECT YEAR('0000-00-00');
परिणाम:
0
इस बार हमें 0
मिलता है , दस्तावेज़ीकरण के अनुसार।
ध्यान दें कि NO_ZERO_DATE
और NO_ZERO_IN_DATE
लेखन के समय बहिष्कृत हैं। इसलिए, उन्हें किसी भी समय हटाया जा सकता है।
संख्यात्मक तिथियां
तिथियों को एक संख्या के रूप में पारित करना भी संभव है, जब तक कि यह एक तिथि के रूप में समझ में आता है।
उदाहरण:
SELECT YEAR(20451210);
परिणाम:
2045
या निम्नलिखित भी (जो दो अंकों वाले वर्ष का उपयोग करता है):
SELECT YEAR(451210);
परिणाम:
2045
लेकिन इसे एक तारीख के रूप में समझना चाहिए। अगर मैं दिन के हिस्से को अमान्य दिन में बढ़ा दूं तो क्या होगा:
SELECT YEAR(20451265);
परिणाम:
+----------------+| वर्ष(20451265) |+----------------+| NULL |+----------------+1 पंक्ति सेट में, 1 चेतावनी (0.00 सेकंड)
हम इस तरह चेतावनी की जांच कर सकते हैं:
show warnings;
परिणाम:
+------+---------- ---------+| स्तर | कोड | संदेश |+------------+----------+---------------------------- --------+| चेतावनी | 1292 | गलत डेटाटाइम मान:'20451265' |+---------+------+-------------------------- --------------+
अन्य सीमांकक
आप तिथि के लिए अन्य सीमांकक का उपयोग कर सकते हैं। जब तारीखों पर सीमांकक की बात आती है तो MySQL काफी क्षमाशील है। यहां कुछ मान्य उदाहरण दिए गए हैं:
SELECT
YEAR('2045/12/10'),
YEAR('2045,12,10'),
YEAR('2045:12:10'),
YEAR('2045;12!10');
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
YEAR('2045/12/10'):2045YEAR('2045,12,10'):2045YEAR('2045:12:10'):2045YEAR('2045;12!10'):2045
वर्तमान तिथि
हम NOW()
pass पास कर सकते हैं वर्तमान तिथि का उपयोग करने के लिए डेटाटाइम तर्क के रूप में:
SELECT
NOW(),
YEAR(NOW());
परिणाम:
+---------------------+---------------+| अभी () | वर्ष (अब ()) |+---------------------+---------------+| 2021-10-17 11:09:23 | 2021 |+---------------------+---------------+
अमान्य तर्क
जब कोई अमान्य तर्क पारित किया गया, YEAR()
रिटर्न NULL
:
SELECT YEAR('2030-65-78');
परिणाम:
+----------------------+| वर्ष('2030-65-78') |+---------------------+| NULL |+-------------------+1 पंक्ति सेट में, 1 चेतावनी (0.00 सेकंड)
चेतावनी की जाँच करें:
show warnings;
परिणाम:
+------+---------- -----------+| स्तर | कोड | संदेश |+------------+----------+---------------------------- ----------+| चेतावनी | 1292 | गलत डेटाटाइम मान:'2030-65-78' |+----------+------+------------ ------------------------+
अनुपलब्ध तर्क
कॉलिंग YEAR()
तर्कों की गलत संख्या के साथ, या कोई तर्क पारित किए बिना, एक त्रुटि उत्पन्न होती है:
SELECT YEAR();
परिणाम:
ERROR 1064 (42000):आपको अपने SQL सिंटैक्स में त्रुटि है; लाइन 1 पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने MySQL सर्वर संस्करण से मेल खाने वाले मैनुअल की जाँच करेंऔर दूसरा उदाहरण:
SELECT YEAR('2030-12-10', '2031-12-10');
परिणाम:
ERROR 1064 (42000):आपको अपने SQL सिंटैक्स में त्रुटि है; लाइन 1पर ', '2031-12-10')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने MySQL सर्वर संस्करण से संबंधित मैनुअल की जाँच करें।