CREATE TABLE IF NOT EXISTS `csf`.`csf_cmp_runtime` (
`cmp_id` INT NOT NULL ,
`csf_begin_time` DATETIME NULL COMMENT '运行 存储过程csf.proc_tmp_data起始时间\n' ,
`csf_end_time` DATETIME NULL COMMENT '运行 存储过程csf.proc_tmp_data结束时间\n' ,
`csfpub_begin_time` DATETIME NULL COMMENT '运行 存储过程csf.proc_pub_data开始时间\n' ,
`csfpub_end_time` DATETIME NULL COMMENT '运行 存储过程csf.proc_pub_data结束时间\n' ,
`all_time` VARCHAR(16) NULL COMMENT '运行所有后台excel的总时间。' ,
PRIMARY KEY (`cmp_id`) )
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COMMENT = '记录一家公司excel执行后台存储过程所花费的时间';
insert into `csf`.`csf_cmp_runtime`
select 322, '2011-01-10 12:23:56','2011-01-10 12:33:46','2011-01-10 12:29:46','2011-01-10 12:33:56','';
select (csf_end_time-csf_begin_time) csf, (csfpub_end_time-csfpub_begin_time) csf_pub
from csf.csf_cmp_runtime;
-- 得出结果如下
990.000000, 410.000000
-- 发现不是我要的结果,我想知道两个时间想减得出 9分50秒 类似的结果,这个如何搞? 我有个思路就是用second函数和minute函数取得分别的分和秒数,然后再做加减运算,这种方法需要写存储过程,我觉得有点麻烦,大家提供一个比较简便的方案吧!
`cmp_id` INT NOT NULL ,
`csf_begin_time` DATETIME NULL COMMENT '运行 存储过程csf.proc_tmp_data起始时间\n' ,
`csf_end_time` DATETIME NULL COMMENT '运行 存储过程csf.proc_tmp_data结束时间\n' ,
`csfpub_begin_time` DATETIME NULL COMMENT '运行 存储过程csf.proc_pub_data开始时间\n' ,
`csfpub_end_time` DATETIME NULL COMMENT '运行 存储过程csf.proc_pub_data结束时间\n' ,
`all_time` VARCHAR(16) NULL COMMENT '运行所有后台excel的总时间。' ,
PRIMARY KEY (`cmp_id`) )
ENGINE = MyISAM
DEFAULT CHARACTER SET = utf8
COMMENT = '记录一家公司excel执行后台存储过程所花费的时间';
insert into `csf`.`csf_cmp_runtime`
select 322, '2011-01-10 12:23:56','2011-01-10 12:33:46','2011-01-10 12:29:46','2011-01-10 12:33:56','';
select (csf_end_time-csf_begin_time) csf, (csfpub_end_time-csfpub_begin_time) csf_pub
from csf.csf_cmp_runtime;
-- 得出结果如下
990.000000, 410.000000
-- 发现不是我要的结果,我想知道两个时间想减得出 9分50秒 类似的结果,这个如何搞? 我有个思路就是用second函数和minute函数取得分别的分和秒数,然后再做加减运算,这种方法需要写存储过程,我觉得有点麻烦,大家提供一个比较简便的方案吧!
mysql> select * from csf_cmp_runtime;
+--------+---------------------+---------------------+---------------------+----
-----------------+----------+
| cmp_id | csf_begin_time | csf_end_time | csfpub_begin_time | csf
pub_end_time | all_time |
+--------+---------------------+---------------------+---------------------+----
-----------------+----------+
| 322 | 2011-01-10 12:23:56 | 2011-01-10 12:33:46 | 2011-01-10 12:29:46 | 201
1-01-10 12:33:56 | |
+--------+---------------------+---------------------+---------------------+----
-----------------+----------+
1 row in set (0.00 sec)mysql> select SEC_TO_TIME(TIME_TO_SEC(csf_end_time)-TIME_TO_SEC(csf_begin_time))
csf,SEC_TO_TIME(TIME_TO_SEC(csfpub_end_time)-TIME_TO_SEC(csfpub_begin_time)) csf_pub
from csf_cmp_runtime;
+----------+----------+
| csf | csf_pub |
+----------+----------+
| 00:09:50 | 00:04:10 |
+----------+----------+
1 row in set (0.00 sec)
把time_to_sec 换成TIMESTAMPDIFF(second,now(),'2011-01-10 15:00')
SEC_TO_TIME(seconds) Returns the seconds argument, converted to hours, minutes, and seconds, as a TIME value. The range of the result is constrained to that of the TIME data type. A warning occurs if the argument corresponds to a value outside that range. mysql> SELECT SEC_TO_TIME(2378);
-> '00:39:38'
mysql> SELECT SEC_TO_TIME(2378) + 0;
-> 3938TIME_TO_SEC(time) Returns the time argument, converted to seconds. mysql> SELECT TIME_TO_SEC('22:23:00');
-> 80580
mysql> SELECT TIME_TO_SEC('00:39:38');
-> 2378
这样也可以