如何在MySQL中自动计算时差?

时间:2017-07-13 08:06:35

标签: mysql time xampp

我有一个数据库表。创建查询如下所示。

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

1 个答案:

答案 0 :(得分:1)

您可以采用以下方法之一:

  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;

  2. 触发器:您可以编写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 ;