- mysql中datetime和timestamp的区别
- MySQL中有关TIMESTAMP和DATETIME的总结
- 对于TIMESTAMP,它把客户端插入的时间从当前时区转化为UTC(世界标准时间)进行存储。查询时,将其又转化为客户端当前时区进行返回。而对于DATETIME,不做任何改变,基本上是原样输入和输出。
- timestamp所能存储的时间范围为:’1970-01-01 00:00:01.000000’ 到 ‘2038-01-19 03:14:07.999999’。datetime所能存储的时间范围为:’1000-01-01 00:00:00.000000’ 到 ‘9999-12-31 23:59:59.999999’
- By default, the first TIMESTAMP column has both DEFAULT CURRENT_TIMESTAMP and ON UPDATE CURRENT_TIMESTAMP if neither is specified explicitly。很多时候,这并不是我们想要的,如何禁用呢?
- 将“explicit_defaults_for_timestamp”的值设置为ON。
- “explicit_defaults_for_timestamp”的值依旧是OFF,也有两种方法可以禁用
- 1> 用DEFAULT子句该该列指定一个默认值
- 2> 为该列指定NULL属性。
- mysql数据库不管是迁库,还是集群,都一定要保证时区的相同。如果mysql集群中的数据库时区不一致,timestamp的字段将会造成数据不一致的情况发生。
CST指的是MySQL所在主机的系统时间,是中国标准时间的缩写,China Standard Time UT+8:00。系统默认时区为CST,而当前时区是system,也就是当前时区为系统默认时区,也就是当前时区为CST。mysql> show variables like '%time_zone%';+------------------+--------+| Variable_name | Value |+------------------+--------+| system_time_zone | CST || time_zone | SYSTEM |+------------------+--------+
修改mysql的时区
```bash set global time_zone = ‘+8:00’; ##修改mysql全局时区为北京时间,即我们所在的东8区 set time_zone = ‘+8:00’; ##修改当前会话时区 flush privileges; #立即生效
操作系统查看时区
date -R
```##在[mysqld]区域中加上default-time_zone = '+8:00'## 重启mysqlsystemctl restart mysql
