我正在尝试确定在我的数据库中存储Unix时间戳的最佳数据类型和大小...
换句话说:
INT(32)
感谢任何技巧。
等等...
我正在尝试确定在我的数据库中存储Unix时间戳的最佳数据类型和大小...
换句话说:
INT(32)
等等...
TIMESTAMP 是一个相当直观的选择。它在内部实现为UNIX时间戳,但在外部显示为日期字符串(例如“1970-01-01 00:00:01”)。
编辑:将INT迁移到时间戳,其中time_test
是表格,ts
是原始列:
ALTER TABLE time_test ADD ts_new TIMESTAMP;
UPDATE time_test SET ts_new = FROM_UNIXTIME(ts);
ALTER TABLE time_test DROP ts;
ALTER TABLE time_test CHANGE COLUMN ts_new ts TIMESTAMP;
如果您关心列的顺序,可能需要稍微调整一下。
MySql支持将Unix时间戳直接作为TIMESTAMP数据类型。
您需要遵守普通限制;日期必须从1970年1月1日到2038年1月19日。
SELECT ts FROM time_test
,你会看到一个日期字符串。但是如果你执行SELECT UNIX_TIMESTAMP(ts) FROM time_test;
,你将得到你输入的确切数字(没有精度损失)。可能有避免显式函数调用的方法。 - Matthew Flaschen