【问题标题】:How to store unix timestamp as int with default and on update?如何在默认和更新时将 unix 时间戳存储为 int?
【发布时间】:2021-12-29 17:06:44
【问题描述】:

我一直在用以下内容更新我的 MySQL 表:

ALTER TABLE logs ADD COLUMN updateTimeStamp timestamp DEFAULT current_timestamp() ON UPDATE current_timestamp;

这以

的格式存储时间戳
2021-12-29 15:21:34

我最初尝试这样做:

ALTER TABLE logs ADD COLUMN updateTimeStamp timestamp DEFAULT unix_timestamp() ON UPDATE unix_timestamp();

这样可以像 12121232 这样存储,但是会导致错误。

无论如何我可以实现默认值和更新并以 1212112 格式存储时间戳,而不是人类可读的日期时间?

我知道我可以做到SELECT unix_timestamt(columnname),但理想情况下我不想这样做。

【问题讨论】:

标签: mysql sql


【解决方案1】:

如果要在选择列时自动获取整数,则需要将其设为int(或int unsigned)类型。您可以使用default (unix_timestamp()) 设置其默认值(如果不使用历史上允许的默认值之一,则需要额外的括号)。并且您需要添加一个触发器以将其设置为更新。

但我建议你不要那样做;只需使用时间戳类型。不使用旨在存储时间戳的类型,只会给自己带来麻烦。

【讨论】:

  • 感谢您的解释。我正在按照你的建议做,并保持时间戳不变
猜你喜欢
  • 1970-01-01
  • 2011-05-16
  • 2020-05-20
  • 1970-01-01
  • 2020-04-20
  • 2021-01-12
  • 2017-06-14
  • 2020-02-13
  • 2017-02-15
相关资源
最近更新 更多