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

कैसे EXTRACT () मारियाडीबी में काम करता है

मारियाडीबी में, 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
पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से संबंधित मैनुअल की जांच करें।

  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. मारियाडीबी 10.6 और नेक्स्टक्लाउड:संपीड़ित पंक्ति डिफ़ॉल्ट रूप से केवल पढ़ने के लिए है

  2. मारियाडीबी TX क्या है? न्यू मारियाडीबी माईएसक्यूएल फोर्क को कैसे प्रबंधित करें!

  3. MySQL Admins के लिए MariaDB Columnstore के लिए एक गाइड

  4. टेराफॉर्म के साथ MySQL/MariaDB वॉल्ट डेटाबेस सीक्रेट इंजन का प्रावधान

  5. मारियाडीबी लोकलटाइमस्टैम्प () समझाया गया