gpt4 book ai didi

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

转载 作者:可可西里 更新时间:2023-11-01 07:38:38 27 4
gpt4 key购买 nike

我想添加一个带有 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,但接口(interface)使用日期时间格式。

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

将其存储为时间戳,并在您从中选择时应用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);

关于mysql - 在更新时使用 UNIX_TIMESTAMP 而不是时间戳,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42929336/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com