mysql - 向 MySQL 数据库的表中添加一列并使用默认值

标签 mysql sql database utc datetime-conversion

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

alter table tab1 add column mod_at TIMESTAMP default CURRENT_TIMESTAMP

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

最佳答案

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

SELECT @@session.time_zone

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

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

...您将看到已存储的值发生更改以匹配新时区。这是预期的行为。

关于mysql - 向 MySQL 数据库的表中添加一列并使用默认值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/43254993/

相关文章:

c# - LINQ to Entities - 同一张表上的多个连接

database - Derby 数据库在作为可执行 jar 部署时未连接,但在 Jdeveloper 中运行良好

java - 将 Android 数据库用于待办事项列表

wpf - WPF 应用程序中对数据库的异步调用

mysql - YCSB 与 mysql 主键的重复条目

mysql - 将多行合并为一行多列

mysql - 在不登录的情况下更改 MySQL 密码

sql - 将表移动到sql server中的新数据库

mysql - 查询输出是另一个查询的输入 - 不起作用

MySQL - 我如何取消一个字段而不是一个字符串?