【问题标题】:Adding a column to a table in MySQL database with default value使用默认值向 MySQL 数据库中的表添加列
【发布时间】:2017-04-06 12:17:18
【问题描述】:

我有一个名为 tab1 的表。我想在表中添加一个新列。 我试过了

alter table tab1 add column mod_at TIMESTAMP default CURRENT_TIMESTAMP

我已成功添加列。但添加的默认时间戳值将是本地时间戳。如何将 UTC 时间戳添加为默认值,而不是本地时间戳?

【问题讨论】:

    标签: mysql sql database utc datetime-conversion


    【解决方案1】:

    我怀疑您误解了 TIMESTAMP 列类型的工作原理。此列始终在内部使用 UTC,但它在您读取或写入时从/到服务器/会话时区转换。您可以运行此查询来查看会话的时区:

    SELECT @@session.time_zone
    

    现在,如果您更改时区,例如:

    SET @@session.time_zone = '+00:00'
    

    ...您会看到已存储的值更改为与新时区匹配。这是预期的行为。

    【讨论】:

      【解决方案2】:

      你可以改用UTC_TIMESTAMP()

      【讨论】:

      • 不能使用alter table tab1 add column mod_at TIMESTAMP default UTC_TIMESTAMP()ALTER TABLE a ADD COLUMN mod_at TIMESTAMP DEFAULT UTC_TIMESTAMP 会报错
      • 不可能@Raymond
      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2021-12-11
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-09-09
      • 2018-08-06
      • 1970-01-01
      相关资源
      最近更新 更多