MySQL:什么是最好用的,Unix TimeStamp或DATETIME
这个问题在这里已经有了答案:
时间戳(PHP和MySQL的)都是使用32位(即4字节)整数存储的; 这意味着它们仅限于从1970年到2038年的日期范围。
DATETIME
没有这个限制 - 但是使用更多的字节存储(如果我没有弄错的话8个字节)
之后,在存储PHP所看到的时间戳或MySQL所看到的时间戳之间:
而且,有关MySQL的TIMESTAMP
和DATETIME
数据类型之间的更多信息,请参见10.3.1。 DATETIME,DATE和TIMESTAMP类型
正如其他人所说,时间戳可以代表一个较小的日期时间范围(从1970年到2038年)。 但是,时间戳测量自Unix纪元(1970-01-01 00:00:00 UTC)以来的秒数,从而使它们与时区无关,而DATETIME存储没有时区的日期和时间。 换句话说,时间戳明确引用特定的时间点,而DATETIME引用的确切时间点需要时间区(不存储在DATETIME字段中)。 要了解为什么这可能很重要,请考虑如果我们更改时区会发生什么情况。
假设我们要存储datetime 2010-03-27 12:00 UTC。 如果我们保存并使用时间戳或DATETIME检索它,那么通常看起来没有区别。 但是,如果服务器现在发生更改以使本地时区为UTC + 01,那么如果我们拉出日期时间,则会得到两个不同的结果。
如果我们将该字段设置为DATETIME,那么尽管时区发生变化,它仍会将日期时间报告为2010-03-27 12:00。 如果我们将字段设置为时间戳,则日期将报告为2010-03-27 11:00。 这对于任何一种数据类型都不是问题 - 这只是他们存储稍微不同的信息的结果。
这真的取决于。 我会给你两个例子,一个克服另一个的例子:
如果要将用户会话存储在数据库中,则时间戳比DATETIME要好,并且会话创建时间(以时间戳格式)用于快速行检索(使用索引)。
例如,表格可能如下所示:
[session_create_time AS Timestamp][IP_address AS 32bit Int][etc...]
在前两列有一个索引可以真正加快你的查询速度。 如果您有session_create_time
字段的DATETIME值类型,则可能需要更多时间。 考虑到每次用户请求页面时都会执行会话查询,因此效率至关重要。
当您想要存储用户的出生日期或某些需要灵活时间范围的历史事件时,DATETIME比时间戳更好。
链接地址: http://www.djcxy.com/p/25099.html上一篇: MySQL: What's the best to use, Unix TimeStamp Or DATETIME