-1

使用 MySQL 时,我应该将时间数据存储为 Int,它是自 1970 年 1 月 1 日 UTC 午夜以来的毫秒数,还是数据库中的 Timestamp。

我知道两者都有优势,这是最好的方法吗?

4

2 回答 2

3

从您的 PHP 代码的角度来看,不能肯定地说,但是以 MySQL 日期时间格式存储它会打开所有 MySQL 日期/时间函数,而无需处理首先使用 FROM_UNIXTIME 进行转换。此外,时间戳有 2038 年的限制 - 请参阅为什么时间戳有 2038 年的限制?

正如评论所说,您可以转换任何一种方式,因此问题在于您希望在哪里最方便 - 在您的 SQL 语句或 PHP 代码中。

恕我直言,时间/日期不仅仅是一个数字——它们在我们使用它们时有特殊目的,所以将它们存储为一个数字会限制你自己。

于 2012-06-12T23:05:03.397 回答
0

在 MySQL 中使用时间戳时,还有一些其他的事情需要考虑。

您(不是,请参阅下面的编辑)只允许数据库中每个表有一个时间戳列

您可以对时间戳列做的一件很酷的事情是,您可以在更新 CURRENT_TIMESTAMP 时使用默认的 CURRENT_TIMESTAMP(同样您只能得到一个可以执行此操作的列)。

除此以外以及已经提到的其他内容,我认为这是使用这些列的唯一动机。

编辑:一张表中可以有多个时间戳列。但是,每个表只能有一个 DEFAULT CURRENT_TIMESTAMP 时间戳。请注意,如果您向表中添加列:

ALTER TABLE table_name ADD COLUMN col_name TIMESTAMP

并且该表中没有另一个时间戳列,它隐式地将其添加到定义中。至少在 MySQL 5.0.92 上。请参阅下面的讨论。

于 2012-06-12T23:39:34.750 回答