mysql从两个日期计算持续时间

时间:2014-03-19 20:51:24

标签: mysql date time

您好我在mysql中有一个日志数据库表,它捕获开始日期和时间以及结束日期和时间。

开始和现在停止时间被插入记录。

我有第三个字段是持续时间,我希望显示为hh:mm:ss

架构目前看起来像这样

CREATE TABLE IF NOT EXISTS `log` (
  `uid` int(20) NOT NULL AUTO_INCREMENT,
  `room` int(11) NOT NULL,
  `start` datetime NOT NULL,
  `stop` datetime NOT NULL,
  `duration` datetime DEFAULT NULL,
  `participants` int(3) NOT NULL,
  `recorded` varchar(3) NOT NULL,
  `rec_file` varchar(35) NOT NULL,
  PRIMARY KEY (`uid`)
) ENGINE=MyISAM  DEFAULT CHARSET=latin1 COMMENT='Log File' AUTO_INCREMENT=106 ;

我正在尝试创建一个计算持续时间的触发器,并在插入数据时将其写入持续时间字段

目前我尝试调试的触发器看起来像这样

BEGIN
     SET NEW.duration = (TIMEDIFF (NEW.start,NEW.stop)) ;
END

结果是持续时间字段保持设置为0000-00-00 00:00:00.000000

有关如何完成这项工作的任何建议都得到了很好的回复

1 个答案:

答案 0 :(得分:0)

尝试添加以下内容:

  1. duration类型更改为TIME而不是DATETIME。根据{{​​3}},TIMEDIFF()返回的结果仅限于TIME值允许的范围。 这就是您目前收到全零的原因。

  2. 我认为stop时间总是晚于start时间,所以我会按以下方式编写触发器:

    在插入your_schema.log之前创建TRIGGER your_schema.insert_duration      对于每行设置NEW.duration = TIMEDIFF(NEW.stop,NEW.start);

  3. 结果将是duration字段的HH:MM:SS格式。