gmt_create为啥叫gmt
因为 GMT(格林威治标准时间)是历史上的国际时间标准基准。
命名由来
- GMT = Greenwich Mean Time(格林威治标准时间)
- 这是以英国伦敦格林威治天文台为本初子午线的世界时间标准
- 在计算机领域,GMT 常被用作时间存储的基准参考
实际使用中的时区对应
-- 虽然字段名叫 gmt_create,但存储的可能是:
CREATE TABLE `user` (`id` bigint unsigned NOT NULL AUTO_INCREMENT,`gmt_create` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP, -- 实际是系统时区时间`gmt_modified` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP,PRIMARY KEY (`id`)
);-- 查询示例
INSERT INTO user (name) VALUES ('test');
SELECT * FROM user;-- 结果:
-- gmt_create: '2024-01-15 14:30:25' -- 显示的是数据库时区时间,不是真正的GMT
历史沿革
| 时间标准 | 说明 | 关系 |
|---|---|---|
| GMT | 基于地球自转的天文时间 | 老标准 |
| UTC | 基于原子钟的协调世界时 | 现代标准,与GMT几乎相同 |
在实际开发中:
- 字段名保持
gmt_前缀是历史习惯 - 但存储的内容应该明确时区(推荐用 UTC)
- 新的系统更推荐用
created_at、updated_at等更直观的命名
现代推荐用法
-- 更现代的命名方式(明确时区)
CREATE TABLE `user` (`id` bigint unsigned NOT NULL AUTO_INCREMENT,`created_at_utc` datetime NOT NULL DEFAULT (UTC_TIMESTAMP()), -- 明确标注UTC`updated_at_utc` datetime NOT NULL DEFAULT (UTC_TIMESTAMP()) ON UPDATE (UTC_TIMESTAMP()),PRIMARY KEY (`id`)
);
结论:gmt_ 是历史命名习惯,实际使用时需要关注真正的时区设置。
