MySQL在触发器中正确使用From_Unixtime
我有一个触发器,每当更新表A时,它就会将记录插入表B。这很好,但是TableA\u date是unix时间格式,我想在触发器插入表B中的记录时转换它MySQL在触发器中正确使用From_Unixtime,mysql,triggers,Mysql,Triggers,我有一个触发器,每当更新表A时,它就会将记录插入表B。这很好,但是TableA\u date是unix时间格式,我想在触发器插入表B中的记录时转换它 DELIMITER $$ CREATE TRIGGER MyTrigger AFTER INSERT ON TableA FOR EACH ROW BEGIN INSERT INTO TableB SET TableB_id = NEW.TableA_id, TableB_date = FROM_UNIXTIME(NE
DELIMITER $$
CREATE TRIGGER MyTrigger
AFTER INSERT
ON TableA
FOR EACH ROW
BEGIN
INSERT INTO TableB SET
TableB_id = NEW.TableA_id,
TableB_date = FROM_UNIXTIME(NEW.TableA_date, '%d/%m/%y %r'),
TableB_comment = NEW.TableA_comment;
END $$
DELIMITER ;
在我的结果中,转换日期不是“01/01/70 03:00:05 AM”,而是“5”-我知道格式字符串是正确的,因为我可以在select语句中使用它。谢谢你的帮助你工作太辛苦了。只需完全省略格式字符串。日期存储为日期,而不是字符串 事实上,根本不用转换!只需直接分配date列,MySQL就可以进行所需的任何转换 我假设TableA_日期是使用
时间戳
数据类型存储的,TableB_日期是日期时间
。(尽管您可能也需要该时间戳的timestamp
)
如果您正在使用其他数据类型,如int或char,请修复它。这不是构造数据库的正确方法
只是为了回答你的实际问题(而不是告诉你正确的方法),你想要的日期格式是
yyy-mm-dd hh:mm:ss
而不是你所拥有的。你的TableB.TableB\u-date
列的数据类型是什么?@Arkady这是个错误。它应该是时间戳
。内部时间戳存储为int,但当您将其设置为timestamp时,MySQL会自动为您处理所有日期转换。