我需要跟踪表中的三个日期:
- created_at
- started_at
- finished_at
将来我计划让我的脚本适用于任何时区。据我所知,当我使用时间戳时,它们可以转换为任何时区,而 datetime 则不能。但另一方面,在一个表中包含多个时间戳似乎不是最佳解决方案,人们通常将 datetime 用于他们的表。
那么,如果我想使用时区,我应该使用什么?实际上我什至无法创建一个包含 3 个时间戳列的表(出现一些错误)
更新:
当我尝试创建具有四个时间戳的表时,出现语法错误。这是代码:
CREATE TABLE IF NOT EXISTS `vs2`.`campaigns` (
`starts_at` TIMESTAMP NOT NULL DEFAULT 0000-00-00 00:00:00 ,
`ends_at` TIMESTAMP NOT NULL DEFAULT 0000-00-00 00:00:00 ,
`updated_at` TIMESTAMP NOT NULL DEFAULT 0000-00-00 00:00:00 ,
`created_at` TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ,
...
我删除了不必要的字段。我确定原因是时间戳有问题,因为当我使用 datetime 时它运行良好。我输入默认值是因为我记得我遇到了一个问题,即所有时间戳都更新为当前日期或类似的东西。当我删除除 created_at 之外的所有时间戳的默认值时,我得到:
Incorrect table definition; there can be only one TIMESTAMP column with CURRENT_TIMESTAMP in DEFAULT or ON UPDATE clause