【问题标题】:mysql trigger to calculate a duration based on starttime and endtimemysql触发器根据开始时间和结束时间计算持续时间
【发布时间】:2017-08-22 16:28:58
【问题描述】:

我想触发以小时为单位计算输入持续时间。

我有以下代码,但它不正确,我不知道为什么。

create trigger Calculate_Duration
before insert or update on Tbl_Eventos

for each row
declare
begin
    :new.duration := :new.endtime - :new.starttime
END;

我的桌子是这样的:

【问题讨论】:

  • 如果您使用的是 MySQL 5.7.6+,您可能需要考虑生成列而不是触发器。 Generated Column Docs
  • 我正在使用'5.7.17-0ubuntu0.16.04.1'
  • 是的,它比 5.7.6 更新,您应该可以使用它们。
  • 如果开始时间或结束时间发生变化?
  • 那么duration值会相应改变。在内部,这将发生在时间发生变化时(对于 STORED GENERATED COLUMNs)或在 SELECT 上评估表达式时(对于 VIRTUAL GENERATED COLUMNs)。

标签: mysql triggers duration


【解决方案1】:

让我们试试这个,

会有用的

CREATE TRIGGER Calculate_Duration BEFORE INSERT OR UPDATE ON Tbl_Eventos FOR EACH ROW SET NEW.duration = TIMEDIFF(NEW.endtime, NEW.starttime);

【讨论】:

  • 如何创建 if 条件,例如。如果 starttime=8:00 和 endtime=18:00 那么持续时间 = 8:00
  • 我已经这样做了: CREATE DEFINER=root@% TRIGGER Calculate_Duration_insert BEFORE INSERT ON Tbl_Eventos FOR Tbl_Eventos FOR TBL_Eventos IF TIMEDIFF(NEW.endtime, NEW.starttime) > 80000 THEN SET NEW.duration = '8:00:00'; ELSE SET NEW.duration = TIMEDIFF(NEW.endtime, NEW.starttime);结束如果
猜你喜欢
  • 2010-11-22
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2015-03-13
  • 1970-01-01
  • 2019-08-24
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多