MySQL从两个不同的列添加日期到日期

时间:2019-03-05 19:38:36

标签: mysql mamp dateadd

您好,我的问题是在Mamp环境中,从MySql中两个不同的表中添加日期到日期上。

Membership transaction Membership type 会员交易的会员类型为一对多 链接为type_id

日期也是yyyy/mm/dd格式,因为这是Mamp在我的研究中唯一允许的格式。
我想要一个新的结束日期列,该列链接到成员资格类型表中的列持续时间。我想将Duration_day添加到start_date上以产生与type_id匹配的结束日期。 (因此它们链接起来可以给出正确的结束日期)
我希望在保存开始日期和type-id时自动进行计算

任何帮助将不胜感激 谢谢

1 个答案:

答案 0 :(得分:0)

您将需要在INSERT / UPDATE上触发-在您的情况下,计算列(对于MySQL v5.7.6 +)将不起作用(它只能引用同一表中的列)。 这两个触发器可能看起来像这样

CREATE DEFINER = 'root'@'%' TRIGGER `m_duration_ins_tr1` BEFORE INSERT ON `membership`
  FOR EACH ROW
BEGIN
DECLARE duration INTEGER;
    SELECT m_duration INTO duration FROM membership_type WHERE id = NEW.type_id;
    SET NEW.end_date := DATE_ADD(NEW.start_date, INTERVAL duration DAY);
END;

CREATE DEFINER = 'root'@'%' TRIGGER `m_duration_ins_tr1` BEFORE UPDATE ON `membership`
  FOR EACH ROW
BEGIN
DECLARE duration INTEGER;
    SELECT m_duration INTO duration FROM membership_type WHERE id = NEW.type_id;
    SET NEW.end_date := DATE_ADD(NEW.start_date, INTERVAL duration DAY);
END;