SQL सर्वर में T-SQL स्टेटमेंट चलाते समय आप ODBC स्केलर फ़ंक्शंस का उपयोग कर सकते हैं। स्ट्रिंग फ़ंक्शंस, संख्यात्मक फ़ंक्शंस, सिस्टम फ़ंक्शंस, और निश्चित रूप से, दिनांक/समय फ़ंक्शंस (जिसे दिनांक, समय और अंतराल फ़ंक्शंस भी कहा जाता है) सहित विभिन्न प्रकार के ओडीबीसी स्केलर फ़ंक्शन हैं।
नीचे दिनांक, समय और अंतराल फ़ंक्शंस के उदाहरण दिए गए हैं जिनका उपयोग आप SQL सर्वर में कर सकते हैं।
सिंटैक्स
सबसे पहले, जब भी आप किसी ODBC स्केलर फ़ंक्शन को कॉल करते हैं, तो आपको इसका उपयोग करने के लिए सिंटैक्स की आवश्यकता होती है:
SELECT {fn <function_name> [ (<argument>,....n) ] }
जहां <function_name>
फ़ंक्शन का नाम है और (<argument>,....n)
वैकल्पिक तर्कों की संख्या है।
तो याद रखने वाली मुख्य बात यह है कि जब आप ओडीबीसी स्केलर फ़ंक्शन को कॉल करते हैं, तो आपको फ़ंक्शन कॉल को घुंघराले ब्रेसिज़ ({}
के भीतर संलग्न करने की आवश्यकता होती है। ) और नाम से पहले fn
. लगाएं ।
उदाहरण 1 - अभी ()
यह फ़ंक्शन वर्तमान दिनांक और समय को टाइमस्टैम्प मान के रूप में लौटाता है।
SELECT {fn NOW()} AS Result;
परिणाम:
+-------------------------+ | Result | |-------------------------| | 2018-06-13 21:52:25.667 | +-------------------------+
उदाहरण 2 - टाइमस्टैम्प, दिनांक और समय
CURRENT_TIMESTAMP()
फ़ंक्शन वर्तमान स्थानीय दिनांक और स्थानीय समय को टाइमस्टैम्प मान के रूप में लौटाता है। आप CURRENT_DATE()
. का भी उपयोग कर सकते हैं केवल दिनांक भाग, और/या CURRENT_TIME()
return लौटाने के लिए केवल समय भाग लौटाने के लिए।
SELECT {fn CURRENT_TIMESTAMP()} AS 'Date & Time', {fn CURRENT_DATE()} AS 'Date', {fn CURRENT_TIME()} AS 'Time';
परिणाम:
+-------------------------+------------+--------------+ | Date & Time | Date | Time | |-------------------------+------------+--------------| | 2018-06-13 21:57:29.197 | 2018-06-13 | 21:57:29.197 | +-------------------------+------------+--------------+
साथ ही, CURRENT_TIMESTAMP()
और CURRENT_TIME()
दोनों एक वैकल्पिक तर्क को स्वीकार करते हैं जो लौटाए गए मान की सेकंड सटीकता को निर्धारित करता है।
उदाहरण:
SELECT {fn CURRENT_TIMESTAMP(3)} AS 'Date & Time', {fn CURRENT_TIME(6)} AS 'Time';
परिणाम:
+-------------------------+-----------------+ | Date & Time | Time | |-------------------------+-----------------| | 2018-06-13 22:00:59.263 | 22:00:59.263000 | +-------------------------+-----------------+
इस उदाहरण में, CURRENT_TIMESTAMP()
3 सेकंड की सटीकता देता है, जबकि CURRENT_TIME()
6 सेकंड की सटीकता लौटाता है।
उदाहरण 3 - CURDATE() और CURTIME()
आप CURDATE()
. का उपयोग कर सकते हैं और/या CURTIME()
उपरोक्त दिनांक और समय कार्यों के विकल्प के रूप में:
SELECT {fn CURDATE()} AS 'Date', {fn CURTIME()} AS 'Time';
परिणाम:
+------------+--------------+ | Date | Time | |------------+--------------| | 2018-06-13 | 22:05:20.013 | +------------+--------------+
ध्यान दें कि ये तर्क किसी भी तर्क को स्वीकार नहीं करते हैं, इसलिए यदि आपको सेकंड सटीक निर्दिष्ट करने की आवश्यकता है, तो CURRENT_DATE()
का उपयोग करें और/या CURRENT_TIME()
इसके बजाय।
उदाहरण 4 - दिन और सप्ताह
दिनांक मान के विशिष्ट भागों को वापस करने के लिए ODBC स्केलर फ़ंक्शंस का एक समूह है। ये फ़ंक्शन एक तर्क को स्वीकार करते हैं, जो वांछित दिनांक भाग को निकालने के लिए दिनांक अभिव्यक्ति है।
तारीख से दिनों और हफ्तों के हिस्से को वापस करने के लिए विभिन्न कार्य यहां दिए गए हैं:
DECLARE @date datetime2 = '2000-02-14 07:31:58.1234567'; SELECT {fn DAYNAME(@date)} AS 'DAYNAME', {fn DAYOFYEAR(@date)} AS 'DAYOFYEAR', {fn DAYOFMONTH(@date)} AS 'DAYOFMONTH', {fn DAYOFWEEK(@date)} AS 'DAYOFWEEK', {fn WEEK(@date)} AS 'WEEK';
परिणाम:
+-----------+-------------+--------------+-------------+--------+ | DAYNAME | DAYOFYEAR | DAYOFMONTH | DAYOFWEEK | WEEK | |-----------+-------------+--------------+-------------+--------| | Monday | 45 | 14 | 2 | 8 | +-----------+-------------+--------------+-------------+--------+
इस मामले में, हमने एक वेरिएबल के लिए एक तारीख नियत की, फिर उस वेरिएबल को प्रत्येक फंक्शन में पास किया। समारोह ने तब लागू तिथि भाग लौटा दिया।
उदाहरण 5 - महीने, तिमाही और वर्ष
यहां दिनांक/समय मान से महीनों, तिमाहियों और वर्षों के हिस्से को वापस करने के विभिन्न कार्य दिए गए हैं:
DECLARE @date datetime2 = '2000-02-14 07:31:58.1234567'; SELECT {fn YEAR(@date)} AS 'YEAR', {fn MONTH(@date)} AS 'MONTH', {fn MONTHNAME(@date)} AS 'MONTHNAME', {fn QUARTER(@date)} AS 'QUARTER';
परिणाम:
+--------+---------+-------------+-----------+ | YEAR | MONTH | MONTHNAME | QUARTER | |--------+---------+-------------+-----------| | 2000 | 2 | February | 1 | +--------+---------+-------------+-----------+
उदाहरण 6 - घंटे, मिनट और सेकंड
दिनांक/समय मान से घंटे, मिनट और सेकंड के हिस्से को वापस करने के लिए विभिन्न कार्य यहां दिए गए हैं:
DECLARE @date datetime2 = '2000-02-14 07:31:58.1234567'; SELECT {fn HOUR(@date)} AS 'HOUR', {fn MINUTE(@date)} AS 'MINUTE', {fn SECOND(@date)} AS 'SECOND';
परिणाम:
+--------+----------+----------+ | HOUR | MINUTE | SECOND | |--------+----------+----------| | 7 | 31 | 58 | +--------+----------+----------+
उदाहरण 7 - EXTRACT() फ़ंक्शन
EXTRACT()
. नामक एक ODBC स्केलर फ़ंक्शन भी है , जो आपको दिनांक/समय मान से विभिन्न दिनांक भागों को निकालने की अनुमति देता है। नीचे दिए गए उदाहरण।
वर्ष, महीना और दिन
DECLARE @date datetime2 = '2000-02-14 07:31:58.1234567'; SELECT {fn EXTRACT(YEAR FROM @date)} AS 'YEAR', {fn EXTRACT(MONTH FROM @date)} AS 'MONTH', {fn EXTRACT(DAY FROM @date)} AS 'DAY';
परिणाम:
+--------+---------+-------+ | YEAR | MONTH | DAY | |--------+---------+-------| | 2000 | 2 | 14 | +--------+---------+-------+
घंटे, मिनट और सेकंड
DECLARE @date datetime2 = '2000-02-14 07:31:58.1234567'; SELECT {fn EXTRACT(HOUR FROM @date)} AS 'HOUR', {fn EXTRACT(MINUTE FROM @date)} AS 'MINUTE', {fn EXTRACT(SECOND FROM @date)} AS 'SECOND';
परिणाम:
+--------+----------+----------+ | HOUR | MINUTE | SECOND | |--------+----------+----------| | 7 | 31 | 58 | +--------+----------+----------+
उदाहरण 8 - TIMESTAMPADD() फ़ंक्शन
TIMESTAMPADD()
आपको दिनांक/समय मान में निर्दिष्ट अंतराल (दिनांक/समय भाग) की एक निर्दिष्ट संख्या जोड़ने की अनुमति देता है। यह फ़ंक्शन तीन तर्क स्वीकार करता है; जोड़ने के लिए अंतराल (दिनांक/समय भाग) (उदा. माह), जोड़ने के लिए उस भाग की संख्या और दिनांक मान। नीचे दिए गए उदाहरण।
वर्ष, तिमाही, महीना और दिन
DECLARE @date datetime2 = '2000-02-14 07:31:58.1234567'; SELECT {fn TIMESTAMPADD(SQL_TSI_YEAR, 21, @date)} AS 'SQL_TSI_YEAR', {fn TIMESTAMPADD(SQL_TSI_QUARTER, 21, @date)} AS 'SQL_TSI_QUARTER', {fn TIMESTAMPADD(SQL_TSI_MONTH, 21, @date)} AS 'SQL_TSI_MONTH', {fn TIMESTAMPADD(SQL_TSI_DAY, 21, @date)} AS 'SQL_TSI_DAY';
परिणाम:
SQL_TSI_YEAR | 2021-02-14 07:31:58.1234567 SQL_TSI_QUARTER | 2005-05-14 07:31:58.1234567 SQL_TSI_MONTH | 2001-11-14 07:31:58.1234567 SQL_TSI_DAY | 2000-03-06 07:31:58.1234567
घंटे, मिनट और सेकंड
DECLARE @date datetime2 = '2000-02-14 07:31:58.1234567'; SELECT {fn TIMESTAMPADD(SQL_TSI_HOUR, 5, @date)} AS 'SQL_TSI_HOUR', {fn TIMESTAMPADD(SQL_TSI_MINUTE, 5, @date)} AS 'SQL_TSI_MINUTE', {fn TIMESTAMPADD(SQL_TSI_SECOND, 5, @date)} AS 'SQL_TSI_SECOND', {fn TIMESTAMPADD(SQL_TSI_FRAC_SECOND, 5, @date)} AS 'SQL_TSI_FRAC_SECOND';
परिणाम:
SQL_TSI_HOUR | 2000-02-14 12:31:58.1234567 SQL_TSI_MINUTE | 2000-02-14 07:36:58.1234567 SQL_TSI_SECOND | 2000-02-14 07:32:03.1234567 SQL_TSI_FRAC_SECOND | 2000-02-14 07:31:58.1284567
उदाहरण 9 - TIMESTAMPDIFF() फ़ंक्शन
TIMESTAMPDIFF()
फ़ंक्शन दो दिनांक/समय मानों के बीच का अंतर देता है। यह फ़ंक्शन तीन तर्क स्वीकार करता है; अंतराल (दिनांक/समय भाग) जिसके लिए अंतर (जैसे माह), पहली तारीख और दूसरी तारीख की गणना करना है। फ़ंक्शन उन अंतरालों की संख्या लौटाता है जो पहली तारीख दूसरी तारीख से अधिक है नीचे दिए गए उदाहरण।
वर्ष, तिमाही, महीना, सप्ताह और दिन
DECLARE @date1 datetime2 = '2000-02-14 07:31:58.1234567'; DECLARE @date2 datetime2 = DATEADD(year, 1, @date1); SELECT {fn TIMESTAMPDIFF(SQL_TSI_YEAR, @date1, @date2)} AS 'SQL_TSI_YEAR', {fn TIMESTAMPDIFF(SQL_TSI_QUARTER, @date1, @date2)} AS 'SQL_TSI_QUARTER', {fn TIMESTAMPDIFF(SQL_TSI_MONTH, @date1, @date2)} AS 'SQL_TSI_MONTH', {fn TIMESTAMPDIFF(SQL_TSI_WEEK, @date1, @date2)} AS 'SQL_TSI_WEEK', {fn TIMESTAMPDIFF(SQL_TSI_DAY, @date1, @date2)} AS 'SQL_TSI_DAY';
परिणाम:
+----------------+-------------------+-----------------+----------------+---------------+ | SQL_TSI_YEAR | SQL_TSI_QUARTER | SQL_TSI_MONTH | SQL_TSI_WEEK | SQL_TSI_DAY | |----------------+-------------------+-----------------+----------------+---------------| | 1 | 4 | 12 | 52 | 366 | +----------------+-------------------+-----------------+----------------+---------------+
घंटे, मिनट और सेकंड
DECLARE @date1 datetime2 = '2000-02-14 07:31:58.1234567'; DECLARE @date2 datetime2 = DATEADD(day, 1, @date1); SELECT {fn TIMESTAMPDIFF(SQL_TSI_HOUR, @date1, @date2)} AS 'SQL_TSI_HOUR', {fn TIMESTAMPDIFF(SQL_TSI_MINUTE, @date1, @date2)} AS 'SQL_TSI_MINUTE', {fn TIMESTAMPDIFF(SQL_TSI_SECOND, @date1, @date2)} AS 'SQL_TSI_SECOND', {fn TIMESTAMPDIFF(SQL_TSI_FRAC_SECOND, @date1, @date2)} AS 'SQL_TSI_FRAC_SECOND';
परिणाम:
+----------------+------------------+------------------+-----------------------+ | SQL_TSI_HOUR | SQL_TSI_MINUTE | SQL_TSI_SECOND | SQL_TSI_FRAC_SECOND | |----------------+------------------+------------------+-----------------------| | 24 | 1440 | 86400 | 86400000 | +----------------+------------------+------------------+-----------------------+