MySQL: Unix时间戳还是DATETIME更好用?

7 浏览
0 Comments

MySQL: Unix时间戳还是DATETIME更好用?

这个问题已经有了答案

在 MySQL 中应该使用 datetime 还是 timestamp 数据类型?

可能许多程序员想问这个问题。就是这两种 MySQL 时间格式各自的优点是什么?你会更喜欢在你的应用中使用哪一个。

对我来说,我使用 Unix 时间戳,因为我发现它容易转换和对记录排序,也因为我从来没有尝试过 DATETIME 的事情。但无论如何,如果有人告诉我我错了,我随时准备改变我的想法。

谢谢

admin 更改状态以发布 2023年5月21日
0
0 Comments

正如其他人所说,时间戳可以表示更小的日期时间范围(从1970年到2038年)。然而,时间戳测量自Unix纪元(1970年01月01日00:00:00 UTC)以来的秒数,因此使它们与时区无关,而DATETIME存储没有时区的日期和时间。换句话说,时间戳明确地引用特定的时间点,而DATETIME所引用的确切时间点需要一个时区(这不存储在DATETIME字段中)。为了说明这为什么重要,考虑一下如果我们改变我们的时区会发生什么。

假设我们想存储日期时间为2010-03-27 12:00的UTC时间。如果我们使用时间戳或DATETIME存储并检索它,那么通常看起来没有区别。然而,如果服务器现在更改本地时区为UTC+01,则如果我们提取日期时间则会得到两个不同的结果。

如果我们将字段设置为DATETIME,它会报告日期时间为2010-03-27 12:00,尽管时区发生了变化。如果我们将字段设置为时间戳,则日期将报告为2010-03-27 11:00。这不是任何一种数据类型的问题,而只是由于它们存储了略微不同的信息而导致的结果。

0
0 Comments

时间戳(包括PHP时间戳和MySQL时间戳)是以32位(即4字节)整数存储的;这意味着它们的日期范围限制为1970年至2038年。

DATETIME没有这个限制 - 但是使用更多字节进行存储(如果我没记错的话是8字节)

在使用PHP时间戳和MySQL时间戳之间的选择中:

另外,有关MySQL的TIMESTAMPDATETIME数据类型之间的更多信息,请参见10.3.1. DATETIME、DATE和TIMESTAMP类型

0