2017-08-10 81 views

回答

1

DATETIMETIMESTAMP不是相同的数据类型,尽管两者都用于存储日期和时间信息(1)

[该]范围DATETIME值是 '1000年1月1日00:00:00.000000' 至 '9999-12-31 23:59:59.999999',以及用于TIMESTAMP值的范围是 ' 1970-01-01 00:00:01.000000'至'2038-01-19 03:14:07.999999'。

MySQL将TIMESTAMP值从当前时区转换为UTC,存储为 ,并从UTC返回到当前时区以供检索。

但要注意,使用TIMESTAMP可能会导致意想不到的结果,因为

如果保存一个TIMESTAMP值,然后更改时区和 检索值,检索到的值是不同的您存储的值为 。发生这种情况是因为在两个方向上都不使用同一时区进行 转换。

由于MySQL的5.6.4, TIMESTAMP需要4个字节+秒的小数部分的存储, DATETIME需要5个字节+分数秒存储(2)

您应该使用TIMESTAMP来存储与时区(这是一般情况)相关的时间信息 - 例如,商业事件。如果您想存储与时区无关的日期 - 例如生日 - 您可以使用DATETIME。请参阅MySQL Spec

+0

非常感谢这些信息,它为我提供了很多帮助。 –