我应该在MySQL中使用日期时间或时间戳数据类型吗?

你会推荐使用日期时间或时间戳字段,以及为什么(使用MySQL)?

我正在服务器端使用PHP。


MySQL中的时间戳通常用于跟踪对记录的更改,并且每次记录更改时都会更新。 如果你想存储一个特定的值,你应该使用日期时间字段。

如果您的意思是您想要决定使用UNIX时间戳还是本地MySQL日期时间字段,请使用本机格式。 您可以用这种方式在MySQL中进行计算("SELECT DATE_ADD(my_datetime, INTERVAL 1 DAY)")并且在查询记录时很容易将值的格式更改为UNIX时间戳("SELECT UNIX_TIMESTAMP(my_datetime)")如果你想用PHP操作它。


在MySQL 5及更高版本中, TIMESTAMP值从当前时区转换为UTC以存储,并从UTC转换回当前时区以供检索。 (这仅出现在TIMESTAMP数据类型中,而不适用于其他类型,如DATETIME。)

默认情况下,每个连接的当前时区是服务器的时间。 时区可以在每个连接的基础上设置,如MySQL服务器时区支持中所述。


除了行元数据(日期创建或修改)之外,我总是使用DATETIME字段。

正如MySQL文档中提到的:

如果您需要包含日期和时间信息的值,则使用DATETIME类型。 MySQL以'YYYY-MM-DD HH:MM:SS'格式检索并显示DATETIME值。 支持的范围是'1000-01-01 00:00:00'到'9999-12-31 23:59:59'。

...

TIMESTAMP数据类型的范围为'1970-01-01 00:00:01'UTC至'2038-01-09 03:14:07'UTC。 它具有不同的属性,具体取决于MySQL版本和运行服务器的SQL模式。

你很有可能达到一般使用的TIMESTAMPs的下限 - 例如存储出生日期。

链接地址: http://www.djcxy.com/p/625.html

上一篇: Should I use the datetime or timestamp data type in MySQL?

下一篇: How to make a great R reproducible example?