MySQL -- 日期类型datetime与timestamp
datetime和timestamp都是MySQL中的日期类型。
datetime类型
以YYYY-MM-DD HH:MM:SS[.fraction]格式存储日期时间:
datetime = YYYY-MM-DD HH:MM:SS
datetime(6) = YYYY-MM-DD HH:MM:SS.fraction
datetime类型与时区无关(其值不随时区变化),存储时占用8个字节。
timestamp类型 存储自1970年1月1日到当前时间的秒数,跟datetime类似,也以以YYYY-MM-DD HH:MM:SS[.fraction]格式展示。
【MySQL -- 日期类型datetime与timestamp】timestamp类型与时区有关,配置不同的时区时其值不同。
timestamp存储时占用4个字节,时间范围:1970-01-01 ~ 2038-01-19。
timestamp类型的字段,可以在DDL语义中定义自动修改(ON UPDATE):
`updated_at` timestamp NOT NULL DEFAULT current_timestamp() ON UPDATE current_timestamp()
demo 主要演示datetime与timestamp随时区变化的情况。
设置当前时区:
mysql> set time_zone='+8:00';
Query OK, 0 rows affected (0.00 sec)
创建表并插入数据:
//d1 datetime类型; d2 timestamp类型
mysql> create table t1(d1 datetime, d2 timestamp);
Query OK, 0 rows affected (0.07 sec)mysql> insert into t1 values(now(), now());
Query OK, 1 row affected (0.02 sec)
查看当前数据:
mysql> select * from t1;
+---------------------+---------------------+
| d1| d2|
+---------------------+---------------------+
| 2019-03-02 18:59:20 | 2019-03-02 18:59:20 |
+---------------------+---------------------+
1 row in set (0.01 sec)
修改时区:
mysql> set time_zone='+10:00';
Query OK, 0 rows affected (0.00 sec)
再查询表数据:
mysql> select * from t1;
+---------------------+---------------------+
| d1| d2|
+---------------------+---------------------+
| 2019-03-02 18:59:20 | 2019-03-02 20:59:20 |
+---------------------+---------------------+
1 row in set (0.00 sec)
可以看到d1 datetime类型,其值不随时区变化;而d2 timestamp其值跟随时区变化。
推荐阅读
- py连接mysql
- 2019-01-18Mysql中主机名的问题
- MySql数据库备份与恢复
- mysql|InnoDB数据页结构
- 接口|axios接口报错-参数类型错误解决
- mysql中视图事务索引与权限管理
- MYSQL主从同步的实现
- 带你了解类型系统以及flow和typescript的基本使用
- 0811~2017下个旅程~利川
- MySQL数据库的基本操作