登录
首页 >  数据库 >  MySQL

我们如何创建一个 MySQL 函数来找出年、月、日、小时、分钟和秒的持续时间?

来源:tutorialspoint

时间:2023-08-30 18:58:59 475浏览 收藏

各位小伙伴们,大家好呀!看看今天我又给各位带来了什么文章?本文标题《我们如何创建一个 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)

今天带大家了解了的相关知识,希望对你有所帮助;关于数据库的技术知识我们会一点点深入介绍,欢迎大家关注golang学习网公众号,一起学习编程~

声明:本文转载于:tutorialspoint 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>