您好,欢迎访问一九零五行业门户网

MySQL DATETIME 和 TIMESTAMP 数据类型有什么区别?

两种数据类型都以“yyyy-mm-dd hh:mm:ss”格式存储数据,并包含日期和时间。尽管有这些相似之处,但它们还是有以下区别 -
范围 - 日期时间数据类型支持 1000 之间的日期和时间-01-01 00:00:00 和 9999-12-31 23:59:59。但时间戳数据类型支持“1970-01-01 00:00:01”到“2038-01-19 08:44:07”之间的日期和时间。大小 - 日期时间需要 5 个字节以及 3 个附加字节用于小数秒的数据存储。另一方面,时间戳数据类型需要 4 个字节以及 3 个附加字节用于小数秒的数据存储。但在 mysql 5.6.4 之前,datetime 需要 8 个字节以及 3 个额外字节用于小数秒的数据存储。从一个时区到另一个时区的转换 - 实际上在 mysql5+ 中,时间戳值从当前时间转换为 utc,反之亦然,而日期时间不进行任何转换。索引 - 可以对时间戳数据进行索引,但无法对日期时间数据进行索引。索引 - 可以对时间戳数据进行索引,但不能对日期时间数据进行索引。 li>查询缓存 - 可以缓存时间戳数据类型的查询,但不能缓存日期时间数据类型的查询。以上是 datetime 之间的一些主要区别和 timestamp 数据类型,以下示例将演示它 -
示例mysql> create table test_datetime(time datetime not null default current_timestamp on update current_timestamp);query ok, 0 rows affected (0.44 sec)mysql> insert into test_datetime (time) values (current_timestamp);query ok, 1 row affected (0.04 sec)mysql> select * from test_datetime;+---------------------+| time |+---------------------+| 2017-11-14 17:29:03 |+---------------------+1 row in set (0.00 sec)mysql> create table test_timestamp(time timestamp not null default current_timestamp on update current_timestamp);query ok, 0 rows affected (0.64 sec)mysql> insert into test_timestamp (time) values (current_timestamp);query ok, 1 row affected (0.06 sec)mysql> select * from test_timestamp;+---------------------+| time |+---------------------+| 2017-11-14 17:29:50 |+---------------------+1 row in set (0.00 sec)
现在,在以下查询中,我们已将时区更改为 utc-05:00,并且具有 timestamp 数据类型的表的结果也发生了更改。
mysql> set @@session.time_zone = '-5:00';query ok, 0 rows affected (0.00 sec)mysql> select * from test_timestamp;+---------------------+| time |+---------------------+| 2017-11-14 06:59:50 |+---------------------+1 row in set (0.00 sec)
输出mysql> select * from test_datetime;+---------------------+| time |+---------------------+| 2017-11-14 17:29:03 |+---------------------+1 row in set (0.00 sec)
以上就是mysql datetime 和 timestamp 数据类型有什么区别?的详细内容。
其它类似信息

推荐信息