MySQL从其他字段计算表达式

MySQL从其他字段计算表达式,mysql,Mysql,我有一个包含以下字段的表 黄昏 事件月 事件年 及 clcEventDate 我希望使用此命令自动填充clcEventDate EventDay/EventMonth/EventYear 我尝试将以下内容作为clcEventDate的默认/表达式编写: EventDay+“/”+EventMonth+“/”+EventYear 但字段显示为空白 做我想做的事情的正确方法是什么 更新* 因此,使用MySQL的方法是使用Before-Insert触发器 DELIMITER # CREATE TRIG

我有一个包含以下字段的表

黄昏 事件月 事件年

及 clcEventDate

我希望使用此命令自动填充clcEventDate

EventDay/EventMonth/EventYear

我尝试将以下内容作为clcEventDate的默认/表达式编写: EventDay+“/”+EventMonth+“/”+EventYear

但字段显示为空白

做我想做的事情的正确方法是什么

更新*

因此,使用MySQL的方法是使用Before-Insert触发器

DELIMITER #
CREATE TRIGGER clcEventDate_FilesMain
BEFORE INSERT ON FilesMain
FOR EACH  ROW 
BEGIN 
     SET NEW.clcEventDate = CONCAT(NEW.EventDay,'/', NEW.EventMonth,'/',NEW.EventYear);
END;
#
DELIMITER ;
现在我有一个不同的问题: 例如,如果EventMonth的值是8,但在对字符串进行concating时,我希望该值是两位数,因此8变为08,而10保持为10。尽管EventDay的值为2,EventMonth的值为8,但如何做到这一点,最终结果将是例如2020年8月2日


谢谢

您使用的是什么mysql版本?您可以使用以下替代触发器:

ALTER TABLE FilesMain ADD COLUMN clcEventDate VARCHAR(255) GENERATED ALWAYS AS (CONCAT(LPAD(NEW.EventDay, 2, "0"),'/', LPAD(NEW.EventMonth, 2, "0"),'/',NEW.EventYear)) STORED;

如果您坚持使用触发器,请记住还有一个更新前触发器

使用计算字段创建一个视图并从视图中选择是否更好?+MySQL中的数字运算符UseContatit可能会,但数据是从tsql迁移的,这就是它在那里构建的方式。指令是保持数据与tsql中的数据完全相同。tsql和MySQL是不一样的。我猜指令是要使结果相同,这可能会导致不同的结果code@P.Salmon尽可能接近版本5.7.31-0ubuntu0.18.04.1