您好我在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
有关如何完成这项工作的任何建议都得到了很好的回复
答案 0 :(得分:0)
尝试添加以下内容:
将duration
类型更改为TIME
而不是DATETIME
。根据{{3}},TIMEDIFF()返回的结果仅限于TIME
值允许的范围。
这就是您目前收到全零的原因。
我认为stop
时间总是晚于start
时间,所以我会按以下方式编写触发器:
在插入your_schema.log之前创建TRIGGER your_schema.insert_duration 对于每行设置NEW.duration = TIMEDIFF(NEW.stop,NEW.start);
结果将是duration
字段的HH:MM:SS格式。