我一直在研究 MySQL 的 DATETIME 和 TIMESTAMP 在使用上的差异。DATETIME 似乎很简单。我会使用以下程序:
- 为所有日期选择默认时区,例如 UTC。
- 让用户从下拉列表中选择日期。
- 使用用户的时区设置(例如 EST)创建具有所选日期的新 PHP DateTime 对象。
- 将对象转换为 UTC,并插入数据库。
- 在另一个页面上,检索日期时间值并使用它创建一个新的 DateTime 对象,使用 UTC 时区。
- 将对象转换为用户的本地时间 (EST),并显示给他。
现在,似乎 mysql 的 TIMESTAMP 列类型可以帮助消除所有这些转换。
- 如果使用 TIMESTAMP 列类型,上述步骤会是什么样子?
- 我需要做“SET time_zone = timezone;”吗 在每个页面加载开始时将时区设置为用户的位置?
- 每个数据库只使用一种日期列类型会更容易吗?如果不是,它可能需要两组不同的函数来生成正确的日期。
- TIMESTAMP 是否应该只用于不打算向公众显示的列中(以免处理格式)?就像创建行、上次编辑等时一样。