- 建表语句如下,创建时间和更新时间由数据库自动维护、精确到毫秒。字符集utf8mb4、区分大小写
CREATE TABLE IF NOT EXISTS `test`
(
`id` bigint unsigned NOT NULL AUTO_INCREMENT COMMENT '主键',
`create_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) COMMENT '创建时间',
`update_time` datetime(3) NOT NULL DEFAULT CURRENT_TIMESTAMP(3) ON UPDATE CURRENT_TIMESTAMP(3) COMMENT '修改时间',
PRIMARY KEY (`id`)
) ENGINE = InnoDB DEFAULT CHARSET=utf8mb4 COLLATE=utf8mb4_bin COMMENT ='测试表';
- 现在都2021年了,时间字段就不要再用timestamp字段了
- datetime类型没有和时区没关系,比如在东八区写入了
2021-07-31 14:45:39.202
,在东九区读出来依然是2021-07-31 14:45:39.202
- CURRENT_TIMESTAMP函数根据mysql的时区,获得对应时区的当前时间
- datetime在mysql存储的时候实际存储的就是20210731144539202这个数字,所以和时区无关
- 所以对跨境业务,在不同国家的数据库最好约定好一个统一的时区,建议都用utf+0,这样不同国家的服务从数据库中读出来在根据时区自己转换就好