MySQL在触发器中正确使用From_Unixtime

时间:2012-09-04 22:28:44

标签: mysql triggers

我有以下触发器,只要更新表A,就会将记录插入表B.这很好但是 TableA_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(NEW.TableA_date, '%d/%m/%y %r'),
    TableB_comment = NEW.TableA_comment;
END $$
DELIMITER ;

在我的结果中,而不是“01/01/70 03:00:05 AM”作为转换日期我得到“5” - 我知道格式字符串是正确的,因为我能够在select语句中使用它。谢谢你的帮助

1 个答案:

答案 0 :(得分:0)

你工作太辛苦了。完全省略格式字符串。日期存储为日期,而不是字符串。

事实上,甚至根本不使用转换!只需直接指定日期列,MySQL就可以进行所需的任何转换。

我假设使用timestamp数据类型存储TableA_date,而TableB_date是datetime。 (虽然您也可能需要timestamp。)

如果您正在使用其他数据类型,如int或char,请修复它。这不是构建数据库的正确方法。


只是回答你的实际问题(而不是告诉你正确的方法)你想要的日期格式是yyyy-mm-dd hh:mm:ss而不是你拥有的。