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

वर्ष () उदाहरण – MySQL

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 सर्वर संस्करण से संबंधित मैनुअल की जाँच करें।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. MySQL बहुत लंबा वर्कर ट्रंकेशन/त्रुटि सेटिंग

  2. MySQL:मैं एक ही टेबल को कई बार कैसे जोड़ूं?

  3. PHP - IN क्लॉज सरणी के साथ PDO का उपयोग करना

  4. MySQL में बैच इंसर्ट कैसे करें

  5. हैशेड पासवर्ड फ़ील्ड के लिए किस डेटा प्रकार का उपयोग करना है और कितनी लंबाई है?