我喜欢70年代,但那是不对的(PHP时间问题)

时间:2009-10-17 14:39:45

标签: php mysql

所以我在我的数据库的每个条目中存储一个隐藏字段time()调用。唯一的问题是,它们都是:

16777215

来自1970年。我不知道为什么这个数字,因为它不是当前时间戳的开头或结尾,而且每个条目都是一样的。它进入了一个mediumint(50)MySQL列,该字段看起来如此:

    <input type="hidden" name="time" value="<?php echo time(); ?>">

这是铸造问题吗?我敢打赌。 Sunnuva枪。让我去检查......

所以我将列更改为“文本”并准确输入。因此,如果我希望这是一个用它做数学的数字,在保存之前我需要使用php将其转换为int吗?只是为了好奇,为什么之前选择这个数字呢?

3 个答案:

答案 0 :(得分:11)

16777215是mediumint的最大数量。你需要使它成为int或Bigint。请参阅MySQL Manual

答案 1 :(得分:8)

为什么不使用专为存储日期而设计的数据类型?

答案 2 :(得分:4)

如果您要存储日期,我强烈建议您使用MySQL中的内置日期类型。为什么?您可以进行日期验证(例如,MySQL不允许您输入第13个月),更容易生成手动查询,并且在查看原始数据时您知道日期是什么。 MySQL还允许您在需要记录行更改时间的列上使用CURRENT_TIMESTAMP()等内容。

将日期存储为整数确实使得简单数学更容易,但我认为这是关于优势在代码中结束的地方。 PHP有一个强大的日期/时间库,可用于处理日期。如果要查看两个日期之间的时间量,可以使用Date :: diff。您也可以在日期中添加和减去时间。 (是的,如果您决定使用函数而不是对象,则有与这些对象相对应的函数。)

Manual entry for Date/Time Objects