我想添加一个带有unix时间戳的列,以查看上次更改行的时间。到目前为止,我只能弄清楚如何添加时间戳格式的列。
+ ----- + ---------------- +
| Codes | PremiumByASL |
+ ----- + ---------------- +
| 010 | 27857.9403619788 |
| 027 | 4295.89527248191 |
| 021 | 22211.0617400998 |
| 120 | 3718.53861388411 |
| 012 | 0 |
| 120 | 6952.564745595 |
| 025 | 23970.5245355982 |
| 021 | 0 |
| 021 | 63683.0552706094 |
| 021 | 139.161555555556 |
| 021 | 39.3638524365101 |
+ ----- + ---------------- +
是否有任何使用unix时间戳的解决方案 - 如下所示:
+ ----- + ---------------- +
| Codes | Premium |
+ ----- + ---------------- +
| 010 | 27,858 |
| 021 | 86,073 |
| 027 | 4,296 |
| 120 | 249,803 |
| 025 | 23,971 |
+ ----- + ---------------- +
更新
据我所知,此线程仅显示如何手动向每行添加unix时间戳。我想知道是否也可以自动执行此操作。
答案 0 :(得分:1)
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);