Computer >> कंप्यूटर ट्यूटोरियल >  >> प्रोग्रामिंग >> MySQL

हम वर्षों, महीनों, दिनों, घंटों, मिनटों और सेकंडों की अवधि का पता लगाने के लिए एक MySQL फ़ंक्शन कैसे बना सकते हैं?

<घंटा/>

निम्नलिखित एक MySQL फ़ंक्शन है जो दो तिथियों के बीच वर्षों, महीनों, दिनों, घंटों, मिनटों और सेकंड में अवधि की गणना करता है।

mysql> DROP FUNCTION IF EXISTS Duration;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> DROP FUNCTION IF EXISTS Label123;
Query OK, 0 rows affected, 1 warning (0.00 sec)

mysql> DELIMITER //
mysql> CREATE FUNCTION Duration( dtd1 datetime, dtd2 datetime ) RETURNS CHAR(128)
   -> BEGIN
   -> DECLARE yyr,mon,mmth,dy,ddy,hhr,m1,ssc,t1 BIGINT;
   -> DECLARE dtmp DATETIME;
   -> DECLARE t0 TIMESTAMP;
   -> SET yyr = TIMESTAMPDIFF(YEAR,dtd1,dtd2);
   -> SET mon = TIMESTAMPDIFF(MONTH,dtd1,dtd2);
   -> SET mmth = mon MOD 12;
   -> SET dtmp = ADDDATE(dtd1, interval mon MONTH);
   -> SET dy = TIMESTAMPDIFF(DAY,dtd1,dtd2);
   -> SET ddy = TIMESTAMPDIFF(DAY,dtmp,dtd2);
   -> SET t0 = TIMESTAMPADD(DAY,dy,dtd1);
   -> SET t1 = TIME_TO_SEC(TIMEDIFF(dtd2,t0));
   -> SET hhr = FLOOR(t1/3600);
   -> SET m1 = FLOOR(t1/60) - 60*hhr;
   -> SET ssc = t1 - 3600*hhr - 60*m1;
   -> RETURN CONCAT( Label123(yyr,'year'), Label123(mmth,'month'),
   ->    label123(ddy,'day'), Label123(hhr,'hour'),
   ->    Label123(m1,'min'), Label123(ssc,'sec')
   -> );
   -> END;
   -> //
Query OK, 0 rows affected (0.00 sec)

mysql> CREATE FUNCTION Label123( ival int, clabel char(16) ) RETURNS VARCHAR(24)
   -> RETURN Concat( ival, ' ', clabel, If(ival=1,' ','s ') ); //
Query OK, 0 rows affected (0.00 sec)

mysql> DELIMITER ;

mysql> Select Duration('2000-08-04 06:09:46', '2011-07-01 05:05:36')AS 'Duration';
+-----------------------------------------------------+
| Duration                                            |
+-----------------------------------------------------+
| 10 years 10 months 26 days 22 hours 55 mins 50 secs |
+-----------------------------------------------------+
1 row in set (0.00 sec)

  1. - मैं एक ही कॉलम को बदलते समय एक MySQL बूलियन कॉलम कैसे बना सकता हूं और मान 1 असाइन कर सकता हूं?

    परिवर्तन करते समय मान 1 निर्दिष्ट करने के लिए, MySQL DEFAULT का उपयोग करें। यदि INSERT कमांड का उपयोग करते समय एक ही कॉलम में कुछ भी नहीं डाला जाता है तो यह 1 दर्ज करेगा। आइए पहले एक टेबल बनाएं - mysql> create table DemoTable (    isAdult int ); Query OK, 0 rows affected (1.39 sec) नि

  1. - MySQL अद्यतन डेटाटाइम कॉलम मान और मौजूदा डेटा में 10 साल 3 महीने 22 दिन और 10 घंटे, 30 मिनट जोड़ें?

    इसके लिए आप MySQL में INTERVAL का इस्तेमाल कर सकते हैं। आइए पहले एक टेबल बनाएं - );क्वेरी ओके, 0 पंक्तियाँ प्रभावित (0.51 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - DemoTable1509 मानों में सम्मिलित करें(2015-12-12 05:45:20);क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.15 सेकंड) चयन कथ

  1. - दिनांक से महीनों का कॉलम कैसे बनाएं और संबंधित कॉलम का योग प्रदर्शित करें जिसमें आपको डुप्लिकेट तिथियां मिलती हैं?

    इसके लिए MySQL में DATE_FORMAT() का उपयोग कर सकते हैं। आइए पहले एक टेबल बनाएं - );क्वेरी ठीक, 0 पंक्तियाँ प्रभावित (0.52 सेकंड) इंसर्ट कमांड का उपयोग करके टेबल में कुछ रिकॉर्ड डालें - डेमोटेबल मानों में डालें(2018-11-10,800);क्वेरी ठीक है, 1 पंक्ति प्रभावित (0.18 सेकंड) चयन कथन का उपयोग करके तालि