两种数据类型都以“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)
复制本文链接文章为作者独立观点不代表优设网立场,未经允许不得转载。
文章推荐更多>
- 1oracle数据库怎么备份数据
- 2mongodb一般用哪个版本
- 3oracle误删除表怎么办
- 4手机夸克怎么退出登录 手机端退出登录教程
- 5mysql数据库属于哪种数据模型
- 6mysql如何读取数据库数据
- 7oracle怎么设置定时任务
- 80x000000a5蓝屏代码是什么意思 蓝屏代码0x000000a5的原因分析
- 9oracle如何查询存储过程中用到哪些字段
- 10phpmyadmin账号密码是什么
- 11oracle数据库卸载软件不存在怎么回事
- 12sqlplus命令找不到怎么解决
- 13c盘放心删除的文件夹 可安全删除的3个文件夹
- 14谷歌浏览器如何翻译 网页内容实时翻译功能使用
- 15phpmyadmin怎么导出数据库
- 16docker环境怎么安装WordPress
- 17电脑黑屏只有鼠标 黑屏鼠标指针问题修复
- 18oracle数据库端口怎么改
- 19oracle怎么看存储过程内容
- 20 公司网站制作需要多少钱,找人做公司网站需要多少钱?
- 21oracle数据库是什么意思
- 22手机uc浏览器的缓存视频怎么导出
- 23wordpress的自动翻译插件怎么使用
- 24wordpress应该更新么
- 25mysql怎么恢复默认设置
- 26UC缓存视频导出后无法打开
- 27wordpress怎么上传外观主题
- 28oracle数据库误删怎么恢复
- 29WordPress怎么加广告位
- 30mysql配置环境变量在哪设置

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)