Mysql 在保存或更新时自动插入日期列之间经过的天数
在表格中,我在workdates表格中有以下列:Mysql 在保存或更新时自动插入日期列之间经过的天数,mysql,date,calculated-columns,difference,Mysql,Date,Calculated Columns,Difference,在表格中,我在workdates表格中有以下列: ID StartDate EndDate NumDays 1 2014-05-03 2014-06-06 31 我希望NumDays列自动完成(自动插入)每个新列或StartDate或EndDate列的每次更新从StartDate到EndDate的天数。在上面的例子中,它是31天,但在这一点上,我手动输入它 在这种情况下,我是否有use触发器,以及“天”列应该是什么类型?也许是这样的 DELIMITER $$ DR
ID StartDate EndDate NumDays
1 2014-05-03 2014-06-06 31
我希望NumDays列自动完成(自动插入)每个新列或StartDate或EndDate列的每次更新从StartDate到EndDate的天数。在上面的例子中,它是31天,但在这一点上,我手动输入它
在这种情况下,我是否有use触发器,以及“天”列应该是什么类型?也许是这样的
DELIMITER $$
DROP TRIGGER IF EXISTS tg_days_number_insert$$
CREATE TRIGGER tg_days_number_insert
BEFORE INSERT ON workdates
FOR EACH ROW
BEGIN
UPDATE reg_add SET days = DATEDIFF(EndDate(),StartDate);
END$$
DELIMITER;
谢谢。您的更新与您的逻辑不符,因为更新位于不同的表中,但您似乎希望在
工作日中设置该列。这是你想要的吗
DELIMITER $$
DROP TRIGGER IF EXISTS tg_days_number_insert$$
CREATE TRIGGER tg_days_number_insert
BEFORE INSERT ON workdates
FOR EACH ROW
BEGIN
SET NEW.days = DATEDIFF(NEW.EndDate, NEW.StartDate);
END$$
DELIMITER;
是我的错,我从别的地方复制了触发码。表名是“workdates”,这就是我想要处理的表名。此外,我无意中更改了您的代码(虽然可能是正确的),而不是上面的代码。我已将NEW.total_days更改为NEW.days,假设“days”保留为“days”列名。@user3387040。也许它应该是numDays
,就像问题中的示例数据一样。(我使用了total_days
,因为它在示例代码中。)