登录
首页 >  数据库 >  MySQL

MySQL -- 日期类型datetime与timestamp

来源:SegmentFault

时间:2023-02-24 18:07:15 176浏览 收藏

亲爱的编程学习爱好者,如果你点开了这篇文章,说明你对《MySQL -- 日期类型datetime与timestamp》很感兴趣。本篇文章就来给大家详细解析一下,主要介绍一下MySQL,希望所有认真读完的童鞋们,都有实质性的提高。

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]格式展示。

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其值跟随时区变化。

本篇关于《MySQL -- 日期类型datetime与timestamp》的介绍就到此结束啦,但是学无止境,想要了解学习更多关于数据库的相关知识,请关注golang学习网公众号!

声明:本文转载于:SegmentFault 如有侵犯,请联系study_golang@163.com删除
相关阅读
更多>
最新阅读
更多>
课程推荐
更多>
评论列表