Php Mysql中日期时间和时间戳的混淆

Php Mysql中日期时间和时间戳的混淆,php,mysql,datetime,timestamp,Php,Mysql,Datetime,Timestamp,我使用的是mysql,所有表中有四个字段 created_by varchar(128) created_on timestamp default current_timestamp updated_by varchar(128) updated_on timestamp default current_timestamp 我读过关于堆栈溢出的不同答案,每次对表行执行某些操作时,默认值为current_timestamp的字段都会自动更新。但我希望created_on在新记录更新时自动插入当前

我使用的是mysql,所有表中有四个字段

created_by varchar(128)
created_on timestamp default current_timestamp
updated_by varchar(128)
updated_on timestamp default current_timestamp
我读过关于堆栈溢出的不同答案,每次对表行执行某些操作时,默认值为current_timestamp的字段都会自动更新。但我希望created_on在新记录更新时自动插入当前_时间戳,并且当该记录在一段时间后更新时,仅Update_by字段自动更新为当前_时间戳,而不是created_by

更多信息::

我使用此结构:

created_by varchar(128)
created_on timestamp  NOT NULL DEFAULT '0000-00-00 00:00:00'
updated_by varchar(128)
updated_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP

在第一次插入时立即使用,以便在上创建。在此之后,修改该行将始终自动更新更新的_on字段。对于UPDATE语句,根本不需要触摸TIMESTAMP列。注意:时间戳只有在某些内容真正更新时才会更新。即,使用现有值更新列不会修改任何内容,因此不会更新时间戳。

,在5.6之前,只能有1个字段具有默认的当前时间戳。不知道为什么,但您必须手动设置更新或创建的值,或者创建一个触发器,依我看,它很难看。这可能有助于您复制它,但只有在OP运行mysql 5.6或更高版本时才能工作,但您确定吗?自5.0起应可用检查:不可能将当前时间戳作为一列的默认值,而将自动更新值作为另一列的默认值。投票结束该问题,作为问题下方的BTWcf第三条评论
created_by varchar(128)
created_on timestamp  NOT NULL DEFAULT '0000-00-00 00:00:00'
updated_by varchar(128)
updated_on timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP