mysql - 在 MySQL 中将日期存储为 unix 时间戳或 TIMESTAMP 数据类型?

标签 mysql database-design timestamp

我需要在 MySQL 数据库中存储日期(带时间)。我希望能够按照我喜欢的方式格式化这些。那么在 MySQL 数据库中存储日期的最佳方式是什么? DATETIME 类型、TIMESTAMP 类型或只是数字数据类型中的 unix 时间戳?我将使用 PHP 检索日期。

最佳答案

通常使用TIMESTAMPDATETIME 数据类型并不重要。

  • 在旧版本中,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/

相关文章:

database - 表应该动态创建吗?

python - 如何在 pandas 数据框上计算一天的小时数

java - 如何在 Java 或 SQL 中将 ISO DATE 转换为时间戳?

mysql - 将 UTF8 数据从 Rails 应用程序编码到 Mysql 时出现问题

mysql - 案例 : choose value in column B base on condition in column A

Slackware 13.37 KDE 错误上的 mysql-workbench

mysql - mysql 中查询之间的日期未生成正确的输出

Oracle - 为什么我应该使用包而不是独立的过程或函数

mysql,加入和排除匹配

Python3时间戳到unix时间(有时是毫秒)