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

两种数据类型均以“ YYYY-MM-DD HH:MM:SS”格式存储数据,并包括日期和时间。尽管有这些相似之处,但它们仍具有以下差异-

  • 范围-Datetime数据类型支持日期以及时间,范围介于1000-01-01 00:00:00和9999-12-31 23:59:59之间。但是timestamp数据类型支持日期以及时间在1970-01-01 00:00:01到2038-01-19 08:44:07之间的范围。

  • 大小-日期时间需要5个字节以及另外3个字节来存储小数秒的数据。另一方面,timestamp数据类型需要4个字节以及3个其他字节来存储小数秒的数据。但是在MySQL 5.6.4之前,DateTime需要8个字节以及3个额外的字节来存储小数秒的数据。

  • 从一个时区转换为另一个时区-实际上,在MySQL5 +中,时间戳值从当前时间转换为UTC,反之亦然,而datetime不进行任何转换。

  • 索引-可以对时间戳数据进行索引,但无法对日期时间数据进行索引。

  • 查询的缓存-具有时间戳数据类型的查询可以被缓存,但是具有日期时间数据类型的查询不能被缓存。

上面是DATETIME和TIMESTAMP数据类型之间的一些主要区别,下面的示例将演示它-

示例

mysql> Create table test_datetime(time DATETIME NOT NULL DEFAULT CURRENT_TIMESTAMP ON UPDATE CURRENT_TIMESTAMP);

mysql> INSERT INTO test_datetime (time) values (CURRENT_TIMESTAMP);

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);

mysql> INSERT INTO test_timestamp (time) values (CURRENT_TIMESTAMP);

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';

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数据类型有什么区别? 的全部内容, 来源链接: utcz.com/z/345592.html

回到顶部