मारियाडीबी में, SUBDATE()
एक अंतर्निहित दिनांक और समय फ़ंक्शन है जो किसी निश्चित तिथि से राशि घटाता है।
यह आपको तिथि, घटाने की इकाई और घटाने की राशि निर्दिष्ट करके तिथि बदलने की अनुमति देता है। जोड़ने . के लिए आप एक ऋणात्मक राशि पास कर सकते हैं तारीख तक, उसमें से घटाने के बजाय।
SUBDATE()
इसमें एक शॉर्टकट सिंटैक्स भी है जो आपको घटाने के दिनों को निर्दिष्ट करने की अनुमति देता है।
सिंटैक्स
SUBDATE()
फ़ंक्शन में दो सिंटैक्स होते हैं।
सिंटैक्स 1:
SUBDATE(expr,days)
जहां expr
तारीख है, और days
घटाने के लिए दिनों की संख्या है।
सिंटैक्स 2:
SUBDATE(date,INTERVAL expr unit)
जहां date
बदलने की तारीख है, expr
घटाने की राशि है, और unit
घटाने के लिए दिनांक/समय इकाई है (उदा. सेकंड, मिनट, आदि)।
इस सिंटैक्स का उपयोग करते समय, SUBDATE()
DATE_SUB()
. का समानार्थी है ।
उदाहरण - सिंटैक्स 1
यहां पहले सिंटैक्स का उपयोग करने का एक उदाहरण दिया गया है:
SELECT SUBDATE('2021-05-01', 1);
परिणाम:
+--------------------------+ | SUBDATE('2021-05-01', 1) | +--------------------------+ | 2021-04-30 | +--------------------------+
यदि आवश्यक हो तो हम समय भाग भी शामिल कर सकते हैं:
SELECT SUBDATE('2021-05-01 10:00:00', 1);
परिणाम:
+-----------------------------------+ | SUBDATE('2021-05-01 10:00:00', 1) | +-----------------------------------+ | 2021-04-30 10:00:00 | +-----------------------------------+
यहाँ एक ही काम करने के दो वैकल्पिक तरीके दिए गए हैं:
SELECT
DATE_SUB('2021-05-01 10:00:00', INTERVAL 1 DAY) AS "Result 1",
'2021-05-01 10:00:00' - INTERVAL 1 DAY AS "Result 2";
परिणाम:
+---------------------+---------------------+ | Result 1 | Result 2 | +---------------------+---------------------+ | 2021-04-30 10:00:00 | 2021-04-30 10:00:00 | +---------------------+---------------------+
उदाहरण - सिंटैक्स 2
दूसरे सिंटैक्स का उपयोग करने का एक उदाहरण यहां दिया गया है:
SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR);
परिणाम:
+-------------------------------------------------+ | SUBDATE('2021-05-31 10:00:00', INTERVAL 1 HOUR) | +-------------------------------------------------+ | 2021-05-31 09:00:00 | +-------------------------------------------------+
यह सिंटैक्स हमें तारीख से अन्य इकाइयों को घटाने की अनुमति देता है (अर्थात केवल दिन नहीं)। यहां, मैंने तिथि से एक घंटा घटाया, लेकिन मैं मिनटों, सेकंड, महीनों, दिनों, वर्षों आदि को आसानी से घटा सकता था। उदाहरण बाद में।
उपरोक्त उदाहरण के समान परिणाम प्राप्त करने के लिए यहां दो वैकल्पिक तरीके दिए गए हैं:
SELECT
DATE_SUB('2021-05-31 10:00:00', INTERVAL 1 HOUR) AS "Result 1",
'2021-05-31 10:00:00' - INTERVAL 1 HOUR AS "Result 2";
परिणाम:
+---------------------+---------------------+ | Result 1 | Result 2 | +---------------------+---------------------+ | 2021-05-31 09:00:00 | 2021-05-31 09:00:00 | +---------------------+---------------------+
नकारात्मक अंतराल
ऋणात्मक अंतराल प्रदान करना जोड़ता है वह राशि आज तक।
उदाहरण:
SELECT SUBDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR);
परिणाम:
+--------------------------------------------------+ | SUBDATE('2021-05-31 10:00:00', INTERVAL -1 HOUR) | +--------------------------------------------------+ | 2021-05-31 11:00:00 | +--------------------------------------------------+
अन्य इकाइयां
यहां एक उदाहरण दिया गया है जो विभिन्न दिनांक और समय इकाइयों से 1 के अंतराल को घटाता है:
SELECT
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 YEAR) AS YEAR,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MONTH) AS MONTH,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 DAY) AS DAY,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 HOUR) AS HOUR,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MINUTE) AS MINUTE,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 SECOND) AS SECOND,
SUBDATE('2021-05-01 10:00:00', INTERVAL 1 MICROSECOND) AS MICROSECOND;
परिणाम (ऊर्ध्वाधर आउटपुट का उपयोग करके):
YEAR: 2020-05-01 10:00:00 MONTH: 2021-04-01 10:00:00 DAY: 2021-04-30 10:00:00 HOUR: 2021-05-01 09:00:00 MINUTE: 2021-05-01 09:59:00 SECOND: 2021-05-01 09:59:59 MICROSECOND: 2021-05-01 09:59:59.999999
समग्र इकाइयां
यहां एक उदाहरण दिया गया है जो मिश्रित इकाइयों का उपयोग करता है:
SELECT
SUBDATE('2021-05-01 10:00:00', INTERVAL '1:2' YEAR_MONTH) AS "YEAR_MONTH",
SUBDATE('2021-05-01 10:00:00', INTERVAL '1:25:35' HOUR_SECOND) AS "HOUR_SECOND",
SUBDATE('2021-05-01 10:00:00', INTERVAL '1:30' DAY_MINUTE) AS "DAY_MINUTE";
परिणाम:
+---------------------+---------------------+---------------------+ | YEAR_MONTH | HOUR_SECOND | DAY_MINUTE | +---------------------+---------------------+---------------------+ | 2020-03-01 10:00:00 | 2021-05-01 08:34:25 | 2021-05-01 08:30:00 | +---------------------+---------------------+---------------------+
अशक्त तिथियां
पासिंग null
वापसी की तारीख के लिए null
:
SELECT SUBDATE(null, INTERVAL 1 YEAR);
परिणाम:
+--------------------------------+ | SUBDATE(null, INTERVAL 1 YEAR) | +--------------------------------+ | NULL | +--------------------------------+
अनुपलब्ध तर्क
कॉलिंग SUBDATE()
तर्कों की गलत संख्या के साथ, या बिना कोई तर्क पारित किए त्रुटि उत्पन्न होती है:
SELECT SUBDATE();
परिणाम:
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पर ')' के पास उपयोग करने के लिए सही सिंटैक्स के लिए अपने मारियाडीबी सर्वर संस्करण से संबंधित मैनुअल की जांच करें।