mysql – 在更新时使用UNIX_TIMESTAMP而不是时间戳

我想添加一个带有unix时间戳的列,以查看最后一次更改行的时间.到目前为止,我只能弄清楚如何添加时间戳格式的列.

ALTER TABLE xyz.test ADD `insert_time` TIMESTAMP ON UPDATE CURRENT_TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP;

有没有任何解决方案可以使用unix时间戳 – 如下所示:

... INT ON UPDATE UNIX_TIMESTAMP() NOT NULL DEFAULT UNIX_TIMESTAMP();

更新:

similar question

据我所知,此线程仅显示如何手动将unix时间戳添加到每一行.我想知道是否也可以自动执行此操作.

最佳答案 TIMESTAMP数据类型是唯一支持MySQL中CURRENT_TIMESTAMP默认值的数据类型.在内部,时间戳存储为int,但接口使用日期时间格式.

你有一些选择来完成你想要的:

将其存储为时间戳,并在从中进行选择时应用UNIX_TIMESTAMP()函数

select unix_timestamp(insert_time)
from xyz.test;

将其存储为int,并使用触发器填充值

ALTER TABLE xyz.test 
  ADD `insert_time_unix` INT NULL;

create trigger tr_b_ins_test before insert on xyz.test 
  for each row 
  set new.insert_time_unix = unix_timestamp(insert_time);

create trigger tr_b_upd_test before update on xyz.test 
  for each row 
  set new.insert_time_unix = unix_timestamp(insert_time);
点赞