在多层系统中,您唯一拥有“本地时间”概念的地方距离数据库很多层。因此,我不是timestamp
的mysql列类型的粉丝,因为它意味着返回的数据取决于服务器的配置和客户端的连接。我更愿意使用datetime
列并明确时区。
从mysql 5.6.5开始,支持默认值,但似乎datetime
列的唯一默认值是CURRENT_TIMESTAMP
,它将datetime
列设置为本地时间。
除了触发器之外,还有一个datetime
创建列,它以UTC格式存储创建时间吗?
答案 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)
无论您使用的是时间戳还是日期时间,该值始终来自系统的时间。问题的步骤 -
您可以通过以下方式将时区设置为utc How do I set the time zone of MySQL?
创建表日期(id int,date datetime default now());
插入日期(id)值(1);
现在你可以看到结果了。
我认为这可以帮到你