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 सेकंड) चयन कथन का उपयोग करके तालि