【问题标题】:Mysql Add days onto date from two different columnsMysql从两个不同的列中添加日期
【发布时间】:2019-03-05 19:38:36
【问题描述】:

您好,我的问题与在 Mamp 环境中的 MySql 中的两个不同表中将日期添加到日期有关。

会员交易的会员类型是一对多 链接是type_id

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

任何帮助将不胜感激 谢谢

【问题讨论】:

  • 你能提供你迄今为止尝试过的和没有工作的地方
  • 编辑您的原始问题。请使用SHOW CREATE TABLE tablename 之类的文字来显示您的数据结构。

标签: mysql mamp dateadd


【解决方案1】:

您将需要一个 INSERT/UPDATE 触发器 - 计算列(对于 MySQL v5.7.6+)在您的情况下不起作用(它只能引用同一个表中的列)。 2 个触发器可能如下所示

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;

【讨论】:

    猜你喜欢
    • 2019-08-05
    • 2018-07-18
    • 1970-01-01
    • 1970-01-01
    • 2020-07-19
    • 2012-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多