在PHP/MySQL安装中Unix时间戳 - 存储此数据的最佳MySQL数据类型是什么?

3

我正在尝试确定在我的数据库中存储Unix时间戳的最佳数据类型和大小...

换句话说:

INT(32)

感谢任何技巧。

等等...

2个回答

5

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;

如果您关心列的顺序,可能需要稍微调整一下。


我知道了。我没有意识到那个...请回答我:如果我已经设置为INT,我是否可以直接更改所有内容为TIMESTAMP并且就可以开始了?我需要指定大小吗? - Shackrock
现在我开始怀疑我所理解的东西了..哈哈。我想继续使用该列作为Unix时间戳 - 也就是大部分数字。当你说“外部显示”时 - 这真正意味着什么? - Shackrock
@Shackrock,如果你只是执行 SELECT ts FROM time_test,你会看到一个日期字符串。但是如果你执行 SELECT UNIX_TIMESTAMP(ts) FROM time_test;,你将得到你输入的确切数字(没有精度损失)。可能有避免显式函数调用的方法。 - Matthew Flaschen
1
啊...我懂了。在这种情况下,我认为最好不要太多地玩弄它。如果我这样问会怎么样:这个的理想INT大小是多少?哈哈! - Shackrock

2

MySql支持将Unix时间戳直接作为TIMESTAMP数据类型。

您需要遵守普通限制;日期必须从1970年1月1日到2038年1月19日。


超过2038年会怎样呢...真的还没有解决方法吗?哈。 - Shackrock

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接