मारियाडीबी में, EXTRACT()
एक अंतर्निहित दिनांक और समय फ़ंक्शन है जो निर्दिष्ट इकाई को किसी दिए गए दिनांक या डेटाटाइम अभिव्यक्ति से लौटाता है।
सिंटैक्स
वाक्य रचना इस प्रकार है:
EXTRACT(unit FROM date)
जहां unit
एक मान्य दिनांक और समय इकाई है, और date
उस इकाई को निकालने की तारीख है।
उदाहरण
यहां एक उदाहरण दिया गया है जो किसी तारीख से वर्ष निकालता है:
SELECT EXTRACT(YEAR FROM '2030-12-25');
परिणाम:
+---------------------------------+ | EXTRACT(YEAR FROM '2030-12-25') | +---------------------------------+ | 2030 | +---------------------------------+
यहाँ एक और है जो दिन निकालता है:
SELECT EXTRACT(DAY FROM '2030-12-25');
परिणाम:
+--------------------------------+ | EXTRACT(DAY FROM '2030-12-25') | +--------------------------------+ | 25 | +--------------------------------+
डेटाटाइम मान
यह डेटाटाइम मानों के साथ भी काम करता है:
SELECT EXTRACT(HOUR FROM '2030-02-01 10:30:45');
परिणाम:
+------------------------------------------+ | EXTRACT(HOUR FROM '2030-02-01 10:30:45') | +------------------------------------------+ | 10 | +------------------------------------------+
दिनांक और समय इकाइयां
यहां एक और उदाहरण दिया गया है जो डेटाटाइम एक्सप्रेशन में प्रत्येक इकाई के माध्यम से चलता है:
SELECT
EXTRACT(YEAR FROM '2030-02-01 10:30:45.123456') AS YEAR,
EXTRACT(MONTH FROM '2030-02-01 10:30:45.123456') AS MONTH,
EXTRACT(DAY FROM '2030-02-01 10:30:45.123456') AS DAY,
EXTRACT(HOUR FROM '2030-02-01 10:30:45.123456') AS HOUR,
EXTRACT(MINUTE FROM '2030-02-01 10:30:45.123456') AS MINUTE,
EXTRACT(SECOND FROM '2030-02-01 10:30:45.123456') AS SECOND,
EXTRACT(MICROSECOND FROM '2030-02-01 10:30:45.123456') AS MICROSECOND;
परिणाम:
+------+-------+------+------+--------+--------+-------------+ | YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MICROSECOND | +------+-------+------+------+--------+--------+-------------+ | 2030 | 2 | 1 | 10 | 30 | 45 | 123456 | +------+-------+------+------+--------+--------+-------------+
समग्र इकाइयां
यहां एक उदाहरण दिया गया है जो एक समग्र इकाई का उपयोग करता है। मिश्रित इकाइयों में कई आधार समय इकाइयां होती हैं।
SELECT EXTRACT(YEAR_MONTH FROM '2030-02-01');
परिणाम:
+---------------------------------------+ | EXTRACT(YEAR_MONTH FROM '2030-02-01') | +---------------------------------------+ | 203002 | +---------------------------------------+
शून्य इकाइयां
शून्य इकाइयों का परिणाम 0
. होता है .
उदाहरण:
SELECT
EXTRACT(YEAR FROM '0000-00-00 00:00:00.000000') AS YEAR,
EXTRACT(MONTH FROM '0000-00-00 00:00:00.000000') AS MONTH,
EXTRACT(DAY FROM '0000-00-00 00:00:00.000000') AS DAY,
EXTRACT(HOUR FROM '0000-00-00 00:00:00.000000') AS HOUR,
EXTRACT(MINUTE FROM '0000-00-00 00:00:00.000000') AS MINUTE,
EXTRACT(SECOND FROM '0000-00-00 00:00:00.000000') AS SECOND,
EXTRACT(MICROSECOND FROM '0000-00-00 00:00:00.000000') AS MICROSECOND;
परिणाम:
+------+-------+------+------+--------+--------+-------------+ | YEAR | MONTH | DAY | HOUR | MINUTE | SECOND | MICROSECOND | +------+-------+------+------+--------+--------+-------------+ | 0 | 0 | 0 | 0 | 0 | 0 | 0 | +------+-------+------+------+--------+--------+-------------+
संख्यात्मक तिथियां
तिथियों को एक संख्या के रूप में पारित करना भी संभव है, जब तक कि यह एक तिथि के रूप में समझ में आता है।
उदाहरण
SELECT EXTRACT(MONTH FROM 20301125);
परिणाम:
+------------------------------+ | EXTRACT(MONTH FROM 20301125) | +------------------------------+ | 11 | +------------------------------+
या निम्नलिखित भी (जो दो अंकों वाले वर्ष का उपयोग करता है):
SELECT EXTRACT(YEAR FROM 301125);
परिणाम:
+---------------------------+ | EXTRACT(YEAR FROM 301125) | +---------------------------+ | 2030 | +---------------------------+
लेकिन यहां सावधान रहें - मारियाडीबी को मूल रूप से अनुमान लगाना होगा कि यह कौन सा वर्ष है। यदि मैं वर्ष को 30 से बढ़ाकर 80 कर देता हूँ तो क्या होगा:
SELECT EXTRACT(YEAR FROM 801125);
परिणाम:
+---------------------------+ | EXTRACT(YEAR FROM 801125) | +---------------------------+ | 1980 | +---------------------------+
तो इस मामले में, पासिंग 30
परिणाम 2030
लेकिन पासिंग 80
लौटा 1980
।
साथ ही, इसे एक तिथि के रूप में समझना चाहिए। यदि मैं किसी अमान्य दिन का उपयोग करता हूँ तो क्या होगा:
SELECT EXTRACT(YEAR FROM 20300135);
परिणाम:
+-----------------------------+ | EXTRACT(YEAR FROM 20300135) | +-----------------------------+ | NULL | +-----------------------------+
अन्य सीमांकक
आप तिथि के लिए अन्य सीमांकक का उपयोग कर सकते हैं। जब तारीखों पर सीमांकक की बात आती है तो मारियाडीबी काफी क्षमाशील है। यहां कुछ मान्य उदाहरण दिए गए हैं:
SELECT
EXTRACT(MONTH FROM '2030/06/25'),
EXTRACT(MONTH FROM '2030,06,25'),
EXTRACT(MONTH FROM '2030:06:25'),
EXTRACT(MONTH FROM '2030;06!25');
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
EXTRACT(MONTH FROM '2030/06/25'): 6 EXTRACT(MONTH FROM '2030,06,25'): 6 EXTRACT(MONTH FROM '2030:06:25'): 6 EXTRACT(MONTH FROM '2030;06!25'): 6
वर्तमान तिथि
हम NOW()
pass पास कर सकते हैं वर्तमान तिथि का उपयोग करने के लिए दिनांक तर्क के रूप में:
SELECT
NOW(),
EXTRACT(MONTH FROM NOW());
परिणाम:
+---------------------+---------------------------+ | NOW() | EXTRACT(MONTH FROM NOW()) | +---------------------+---------------------------+ | 2021-05-16 10:06:21 | 5 | +---------------------+---------------------------+
अमान्य तिथियां
अमान्य दिनांक पारित होने पर, EXTRACT()
रिटर्न null
:
SELECT EXTRACT(YEAR FROM 'Friday');
परिणाम:
+-----------------------------+ | EXTRACT(YEAR FROM 'Friday') | +-----------------------------+ | NULL | +-----------------------------+
अमान्य दिनांक/समय इकाई
अमान्य दिनांक/समय इकाई पारित होने पर, EXTRACT()
एक त्रुटि देता है:
SELECT EXTRACT(DECADE FROM '2030-06-25');
परिणाम:
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 'DECADE FROM '2030-06-25')' at line 1पर 'DECADE FROM '2030-06-25') के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने MariaDB सर्वर संस्करण से संबंधित मैनुअल की जाँच करें।
अनुपलब्ध तर्क
कॉलिंग EXTRACT()
कोई तर्क पारित किए बिना त्रुटि उत्पन्न होती है:
SELECT EXTRACT();
परिणाम:
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 'DECADE FROM '2030-06-25')' at line 1पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से संबंधित मैनुअल की जांच करें।