我有一个数据库表。创建查询如下所示。
CREATE TABLE `prime_clock` (
`stage` int(11) NOT NULL,
`name` varchar(50) DEFAULT NULL,
`start_time` time NOT NULL,
`end_time` time NOT NULL,
`difference` time NOT NULL
) ENGINE=InnoDB DEFAULT CHARSET=latin1;
考虑我有一个样本条目
INSERT INTO `prime_clock` (`stage`, `name`, `start_time`, `end_time`, `difference`) VALUES
(1, 'fff', '12:33:00', '13:00:00', '00:00:00');
对于我使用的主键
ALTER TABLE `prime_clock`
ADD PRIMARY KEY (`stage`);
现在的问题是如何在开始和结束时间之间找到持续时间;即 end_time - start_time 并自动存储差异 作为添加新行或在开始时间或结束时进行修改时间。
另外,我可以使用
手动完成UPDATE `prime_clock` SET `difference`=TIMEDIFF(`end_time`,`start_time`) WHERE 1
答案 0 :(得分:1)
您可以采用以下方法之一:
生成的列(解释here):您可以按如下方式定义表:
CREATE TABLE prime_clock (
stage int(11) NOT NULL,
name varchar(50) DEFAULT NULL,
start_time time NOT NULL,
end_time time NOT NULL,
difference time AS TIMEDIFF(end_time, start_time) STORED
ENGINE=InnoDB DEFAULT CHARSET=latin1;
触发器:您可以编写BEFORE INSERT
触发器,为每个插入行计算difference
,例如:
DELIMITER //
CREATE TRIGGER calculate_difference
BEFORE INSERT
ON table FOR EACH ROW
BEGIN
SET NEW.difference = TIMEDIFF(end_time, start_time);
END; //
DELIMITER ;