我需要在 MySQL 数据库中存储日期(带时间)。我希望能够按照我喜欢的方式格式化这些。那么在 MySQL 数据库中存储日期的最佳方式是什么? DATETIME 类型、TIMESTAMP 类型或只是数字数据类型中的 unix 时间戳?我将使用 PHP 检索日期。
最佳答案
通常使用TIMESTAMP
或DATETIME
数据类型并不重要。
- 在旧版本中,
TIMESTAMP
是 4 个字节,DATETIME
是 8 个字节。 - 将
DATETIME
想象成时钟的图片;将TIMESTAMP
视为世界范围内的一个瞬间。也就是说,如果您连接到同一个数据库,但来自不同的时区,DATETIME
看起来是一样的,但是TIMESTAMP
会针对时区进行调整。< NOW()
、SELECTing
到 PHP 等都与两者兼容。- 两者在外部都被视为一个字符串,例如'2015-04-25 17:09:01'。
- 由于
TIMESTAMP
存储为 32 位整数(但您看不到),因此它被限制在 ~1970-2038 之间。 - 由于
DATETIME
是时钟时间,因此如果您切换到夏令时/从夏令时切换到/退出夏令时,每年将缺少/额外一小时。
是的,您可以使用 UNIX_TIMESTAMP()
并有一个 INT UNSIGNED
,但是看到“2015-...”不是更好吗? (那将是 4 个字节。)
关于mysql - 在 MySQL 中将日期存储为 unix 时间戳或 TIMESTAMP 数据类型?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/29865762/