Php 在MySQL数据库中存储Unix时间戳需要多大的INT?

Php 在MySQL数据库中存储Unix时间戳需要多大的INT?,php,mysql,int,Php,Mysql,Int,我是否需要MySQL数据类型INT或BIGINT来存储PHP返回并由函数使用的Unix时间戳?您可以检查PHP的常量PHP\u INT\u MAX,以查找最大整数。这将因环境而异。在我的本地系统上: echo date('Y-m-d H:i:s', PHP_INT_MAX) . '<br />'; // outputs: 292277026596-12-04 09:30:07 任何较大的结果都类似于a(数字变为负值) 因此,在我的特定系统上,我需要使用mysql的BIGINT来存储

我是否需要MySQL数据类型
INT
BIGINT
来存储PHP返回并由函数使用的Unix时间戳?

您可以检查PHP的常量
PHP\u INT\u MAX
,以查找最大整数。这将因环境而异。在我的本地系统上:

echo date('Y-m-d H:i:s', PHP_INT_MAX) . '<br />';
// outputs: 292277026596-12-04 09:30:07
任何较大的结果都类似于a(数字变为负值)


因此,在我的特定系统上,我需要使用mysql的
BIGINT
来存储这些值,因为
INT
只能存储到2147483647

为什么您不使用MySQL内置的
时间戳
日期时间
?除非有非常具体的原因需要将“日期”存储为整数,否则我建议使用MySQL的内部日期/时间戳函数。虽然您确实应该使用日期时间,但可能存在重复。@CharlotteDunois:谢谢,看来,
BIGINT
是证明未来的方法。至于
DATETIME
,这是我最初的设计。不幸的是,PHP在将日期转换为MySQL的
YYYY-MM-DD HH:MM:SS
格式方面非常糟糕,因此为了清晰起见,我决定只使用Unix时间戳。例如,我将所有日期存储在UTC时区中。但当我进行这些转换时,PHP试图将其转换为服务器的本地时间,这真是太痛苦了!!!谢谢是的,听起来像是
BIGINT
是一种方式。而且,正如有人在上面的评论中建议的那样,
时间戳
不起作用,因为它隐式地是32位的。再加上
TIMESTAMP
会进行与UTC之间的隐式转换(这让我发疯!)
echo mktime(9, 30, 7, 12, 4, 292277026596);
// outputs: 9223372036854775807