有没有办法在mysql中创建DATETIME列,默认为UTC中的当前时间戳?

时间:2015-04-07 15:18:20

标签: mysql datetime

在多层系统中,您唯一拥有“本地时间”概念的地方距离数据库很多层。因此,我不是timestamp的mysql列类型的粉丝,因为它意味着返回的数据取决于服务器的配置和客户端的连接。我更愿意使用datetime列并明确时区。

从mysql 5.6.5开始,支持默认值,但似乎datetime列的唯一默认值是CURRENT_TIMESTAMP,它将datetime列设置为本地时间。

除了触发器之外,还有一个datetime创建列,它以UTC格式存储创建时间吗?

3 个答案:

答案 0 :(得分:1)

似乎无法将DATETIME的默认值设置为UTC中的“NOW”。

答案 1 :(得分:0)

不幸的是,看起来没有办法做到这一点。我甚至试过这样做:

create table test_table (
    id int,
    test_date timestamp default convert_tz(now(), 'America/New_York', 'UTC')
);

不成功。奇怪的是,创建表时唯一可以传递的函数是now(),似乎。

答案 2 :(得分:-1)

无论您使用的是时间戳还是日期时间,该值始终来自系统的时间。问题的步骤 -

  1. 您可以通过以下方式将时区设置为utc How do I set the time zone of MySQL?

  2. 创建表日期(id int,date datetime default now());

  3. 插入日期(id)值(1);

  4. 现在你可以看到结果了。

    1. 从日期中选择*;
    2. 我认为这可以帮到你