我想添加一个带有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();
更新:
据我所知,此线程仅显示如何手动将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);