当前位置: 首页 > news >正文

网站备案证图片微信小程序项目模板

网站备案证图片,微信小程序项目模板,长沙网站备案,四川网站制作哪家好文章目录 前言1. 时区参数影响2. 如何设置3. 字段类型选择 前言 MySQL 时区参数 time_zone 有什么用?修改它有什么影响?如何设置该参数,本篇文章会详细介绍。 1. 时区参数影响 time_zone 参数影响着 MySQL 系统函数还有字段的 DEFAULT CUR…

文章目录

  • 前言
  • 1. 时区参数影响
  • 2. 如何设置
  • 3. 字段类型选择

前言

MySQL 时区参数 time_zone 有什么用?修改它有什么影响?如何设置该参数,本篇文章会详细介绍。

1. 时区参数影响

time_zone 参数影响着 MySQL 系统函数还有字段的 DEFAULT CURRENT_TIMESTAMP 的属性。

查询当前的时区,+8:00 就代表国内的时区:

root@mysql 15:08:  [(none)]>select @@time_zone;
+-------------+
| @@time_zone |
+-------------+
| +08:00      |
+-------------+

查询当前时间:

root@mysql 15:09:  [(none)]>select now();
+---------------------+
| now()               |
+---------------------+
| 2024-12-12 15:09:44 |
+---------------------+

修改时区,为 UTC -8:00 美国时间:

root@mysql 15:09:  [(none)]>set global time_zone = '-08:00';
Query OK, 0 rows affected (0.00 sec)

查询当前时间:

root@mysql 15:09:  [(none)]>select now();
+---------------------+
| now()               |
+---------------------+
| 2024-12-11 23:09:55 |
+---------------------+

另外,需要注意的是 timestamp 类型,会随着 time_zone 的值产生变化,而 datetime 类型则不会,请看下方演示。

确认当前 time_zone 参数值:

select @@time_zone;+-------------+
| @@time_zone |
+-------------+
| +08:00      |
+-------------+

创建测试表结构,两张表的区别是 created_at、updated_at 分别为 datetime 和 timestamp 类型。

CREATE TABLE `api_datetime` (`id` bigint(64) NOT NULL AUTO_INCREMENT,user varchar(10),`created_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`enabled` bit(1) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;CREATE TABLE `api_timestamp` (`id` bigint(64) NOT NULL AUTO_INCREMENT,user varchar(10),`created_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT '创建时间',`updated_at` timestamp NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP COMMENT '更新时间',`enabled` bit(1) NOT NULL,PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=14 DEFAULT CHARSET=utf8;

模拟数据插入:

insert into api_timestamp(user, enabled) values ('+08:00', b'1');
insert into api_datetime(user, enabled) values ('+08:00', b'1');

查询表数据:

root@mysql 16:21:  [test]>select user,created_at, updated_at from api_datetime;
+--------+---------------------+---------------------+
| user   | created_at          | updated_at          |
+--------+---------------------+---------------------+
| +08:00 | 2024-12-12 16:20:34 | 2024-12-12 16:20:34 |
+--------+---------------------+---------------------+
1 row in set (0.00 sec)root@mysql 16:21:  [test]>select user,created_at, updated_at from api_timestamp;
+--------+---------------------+---------------------+
| user   | created_at          | updated_at          |
+--------+---------------------+---------------------+
| +08:00 | 2024-12-12 16:20:33 | 2024-12-12 16:20:33 |
+--------+---------------------+---------------------+

修改 time_zone 参数值,为 -8:00:

set global time_zone = '-8:00';

插入测试数据:

insert into api_timestamp(user, enabled) values ('-08:00', b'1');
insert into api_datetime(user, enabled) values ('-08:00', b'1');
root@mysql 16:25:  [test]>select user,created_at, updated_at from api_datetime;
+--------+---------------------+---------------------+
| user   | created_at          | updated_at          |
+--------+---------------------+---------------------+
| +08:00 | 2024-12-12 16:20:34 | 2024-12-12 16:20:34 |
| -08:00 | 2024-12-12 00:25:52 | 2024-12-12 00:25:52 |
+--------+---------------------+---------------------+
2 rows in set (0.00 sec)root@mysql 16:25:  [test]>select user,created_at, updated_at from api_timestamp;
+--------+---------------------+---------------------+
| user   | created_at          | updated_at          |
+--------+---------------------+---------------------+
| +08:00 | 2024-12-12 00:20:33 | 2024-12-12 00:20:33 |
| -08:00 | 2024-12-12 00:25:52 | 2024-12-12 00:25:52 |
+--------+---------------------+---------------------+
2 rows in set (0.00 sec)

由上方测试,我们发现如果字段设置为 CURRENT_TIMESTAMP 无论是 datetime 还是 timestamp 类型,都会随 time_zone 参数影响,不过 datetime 类型的历史数据不会受影响,timestamp 类型的历史数据,会随着 time_zone 的调整而发生变化。

2. 如何设置

推荐直接写在 MySQL 的配置文件中,需要重启生效。

[mysqld]
default-time-zone='+08:00'

该参数默认为 SYSTEM 表示该参数值,取自操作系统的时区设置。不过还是建议在 MySQL 参数文件中设置一下,因为操作系统可能可能不完全归 DBA 管理,万一有人突然调整了,可能会引起线上问题。

另外,如果 time_zone 使用默认的 system 值,表示默认使用操作系统的时区,则每次通过时区计算时间时,要调用操作系统底层系统函数 __tz_convert(),而这个函数需要额外的加锁操作,以确保这时操作系统时区没有修改。高并发的时候会导致 TIMESTAMP 类型的表和操作,性能降低。

3. 字段类型选择

业务中尽量使用 datetime 类型来存储时间,除了历史数据不会随着时区发生变化外,还有一个最大值限制问题。

TIMESTAMP 存储的是 1970-01-01 00:00:00’ 到现在的毫秒数,TIMESTAMP 占用 4 个字节,因此其存储的时间上限只能到 2038-01-19 03:14:07 已经离现在不远了,是需要重视的,业务又将面临一次类似千年虫的问题。

http://www.yayakq.cn/news/363115/

相关文章:

  • php网站开发设计要求做茶叶网站
  • 怎样自己做网页设计网站wordpress如何跳转页面步骤
  • 课程设计代做网站西安网站开发有哪些公司
  • 网站如何横屏网站建设首页包括什么软件
  • 广州免费建站平台开公司要多少钱
  • 网站后台插件下载邯郸市魏县建设局网站
  • 北京 做网站比较有名的wordpress 电商插件
  • 营销网站的设计与实现在国外做电商网站有哪些
  • 旅游类网站建设方案免费的asp网站
  • 鄂尔多斯市建设厅官方网站网站死链接怎么删除
  • 赣州网站建设资讯室内设计师怎么考证
  • 100m网站注册怎样建立销售网站
  • 网站建设推广群工作室英文
  • 免费域名怎么做网站软件项目管理心得
  • 做网站公司什么条件书画艺术网站建设概况
  • 睿艺美开封做网站网络直播营销的方式有哪些
  • 重庆网站建设优化响应式网站怎么做mip
  • 网页设计个人网站设计单位网站建设的必要性
  • 如何做收费会员定制网站做三年网站需要多少钱
  • 网站这么做301找网站做q币
  • 网站开发技能宝塔怎么做两个网站
  • 五力合一营销型网站建设系统成都网站建设公司哪家专业
  • 宁波网站制作与推广想建设网站
  • 重庆网站排名优化腾讯视频推广联盟
  • seo工具网站公司网站建设的项目工作分解结构
  • 做网站用语言建设视频网站设计意义
  • 黄石公司网站建设品牌seo推广咨询
  • 怎么可以上传自己做的网站服装平面广告设计图片
  • 网站建设二级页面方案收费看电影网站建设
  • 建站模板更改青岛网络优化费用