测试:
CREATE TABLE `test1`( id bigint not null AUTO_INCREMENT COMMENT '主键ID', name varchar(20) COMMENT '主键ID', create_time TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP COMMENT 'cr time', PRIMARY KEY(id) )ENGINE=InnoDB AUTO_INCREMENT=1 ; SHOW VARIABLES LIKE 'explicit_defaults_for_timestamp'; SET GLOBAL explicit_defaults_for_timestamp=ON; SET GLOBAL explicit_defaults_for_timestamp=OFF; INSERT INTO test1(id,name,create_time) VALUES(1,'Kit',NULL);
3.mysql系统配置
系统相关事件参数包含3个:
mysql>show global variables where Variable_name like '%time_zone%' or Variable_name like 'log_timestamp%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | system_time_zone | CST | | time_zone | SYSTEM | | log_timestamps | UTC | +------------------+--------+ 3 rows in set (0.00 sec)
1.system time zone:当服务器启动时,它尝试自动确定主机的时区,并使用它来设置system_time_zone系统变量。此后该值不会改变。
2.time_zone:全time_zone表示服务器当前运行的时区。初始的time_zone值为“SYSTEM”,表示服务器时区与系统时区一致。
- 如果设置为SYSTEM, 如MySQL函数调用都会调用一个系统库来确定当前的系统时区。这个调用可能被一个全局互斥锁保护,从而导致争用。CPU使用率高问题。
- 设置会话时区会影响时区敏感的时间值的显示和存储。这包括NOW()或CURTIME()等函数显示的值,以及存储在时间戳列中的值和从时间戳列检索到的值。时间戳列的值将从会话时区转换为UTC用于存储,从UTC转换为会话时区用于检索。
- 会话时区设置不影响UTC_TIMESTAMP()等函数显示的值,也不影响DATE、time或DATETIME列中的值。这些数据类型的值也不存储在UTC;时区仅在从时间戳值转换时适用它们。
备注:mysql还提供时区导入到mysql系统库的方法。通过mysql_tzinfo_to_sql程序加载/usr/share/zoneinfom下的时区信息。
mysql> SELECT COUNT(*) FROM mysql.time_zone_name; +----------+ | COUNT(*) | +----------+ | 0 | +----------+
##mysql_tzinfo_to_sql工具导入时区值
shell>mysql_tzinfo_to_sql /usr/share/zoneinfo | mysql -u root mysql
mysql> SELECT COUNT(*) FROM mysql.time_zone_name; +----------+ | COUNT(*) | +----------+ | 1780 | +----------+
3.log_timestamps
这个变量控制写入错误日志的消息以及写入文件的一般查询日志和慢速查询日志消息中的时间戳的时区。
它不会影响一般查询日志的时区和慢速查询日志消息写入表(mysql。general_log mysql.slow_log)。
允许的log_timestamps值是UTC(默认值)和SYSTEM(本地系统时区)
备注:UTC一般指协调世界时。协调世界时,又称世界统一时间、世界标准时间、国际协调时间,就是UTC+8小时=中国时间
当然值 需要跟系统记录时间一致,才能更好的管理。
#设置时区,更改为东八区 SET GLOBAL time_zone = '+8:00';
建议:
mysql配置文件my.cnf
[mysqld] log_timestamps=SYSTEM default-time_zone = '+8:00'
mysql>show global variables where Variable_name like '%time_zone%' or Variable_name like 'log_timestamp%'; +------------------+--------+ | Variable_name | Value | +------------------+--------+ | log_timestamps | SYSTEM | | system_time_zone | CST | | time_zone | +08:00 | +------------------+--------+
总结
从时间类型,参数,系统时区了解到,MySQL里时间应该怎样设置和使用。
特别是无特殊要求sql_mode不要轻易改动。
到此这篇关于MySQL时间设置注意事项的文章就介绍到这了,更多相关MySQL时间设置注意内容请搜索
更多相关Mysql内容来自木庄网络博客
标签:Mysql
相关阅读 >>
更多相关阅读请进入《mysql》频道 >>
数据库系统概念 第6版
本书主要讲述了数据模型、基于对象的数据库和XML、数据存储和查询、事务管理、体系结构等方面的内容。