搜索
首页数据库mysql教程mysql中DATETIME、DATE和TIMESTAMP的区别_MySQL

bitsCN.com

mysql中DATETIME、DATE和TIMESTAMP的区别

 

DATETIME、DATE和 TIMESTAMP类型是相似的。本篇描述了它们的特性以及它们的相似点与不同点。

DATETIME类型可用于需要同时包含日期和时间信息的值。MySQL 以 'YYYY-MM-DD HH:MM:SS'格式检索与显示 DATETIME 类型。支持的范围是'1000-01-0100:00:00' 到 '9999-12-3123:59:59'。(“支持”的含义是,尽管更早的值可能工作,但不能保证他们均可以。)

DATE类型可用于需要一个日期值而不需要时间部分时。MySQL 以 'YYYY-MM-DD' 格式检索与显示DATE值。支持的范围是 '1000-01-01' 到'9999-12-31'。

TIMESTAMP列类型提供了一种类型,通过它你可以以当前操作的日期和时间自动地标记 Insert 或Update 操作。如果一张表中有多个TIMESTAMP列,只有第一个被自动更新。

“完整”TIMESTAMP格式是14位,但TIMESTAMP列也可以用更短的显示尺寸创造

最常见的显示尺寸是6、8、12、和14。

你可以在创建表时指定一个任意的显示尺寸,但是定义列长为0或比14大均会被强制定义为列长14。

列长在从1~13范围的奇数值尺寸均被强制为下一个更大的偶数。

列如:

定义字段长度    强制字段长度

TIMESTAMP(0) -> TIMESTAMP(14)

TIMESTAMP(15)-> TIMESTAMP(14)

TIMESTAMP(1) -> TIMESTAMP(2)

TIMESTAMP(5) -> TIMESTAMP(6)

所有的TIMESTAMP列都有同样的存储大小,

使用被指定的时期时间值的完整精度(14位)存储合法的值不考虑显示尺寸。

不合法的日期,将会被强制为0存储

自动更新第一个 TIMESTAMP列在下列任何条件下发生:

列值没有明确地在一个 Insert 或LOAD DATAINFILE 语句中被指定。

列值没有明确地在一个 Update语句中被指定,并且其它的一些列值已发生改变。(注意,当一个 Update 设置一个列值为它原有值时,这将不会引起TIMESTAMP列的更新,因为,如果你设置一个列值为它当前值时,MySQL 为了效率为忽略更新。)

明确地以 NULL 设置 TIMESTAMP 列。

第一个列以外其它 TIMESTAMP列,可以设置到当前的日期和时间,只要将该列赋值 NULL 或 NOW()。

任何 TIMESTAMP列均可以被设置一个不同于当前操作日期与时间的值,这通过为该列明确指定一个你所期望的值来实现。这也适用于第一个TIMESTAMP列。这个选择性是很有用的,举例来说,当你希望 TIMESTAMP列保存该记录行被新添加时的当前的日期和时间,但该值不再发生改变,无论以后是否对该记录行进行过更新:

当该记录行被建立时,让 MySQL设置该列值。这将初始化该列为当前日期和时间。

以后当你对该记录行的其它列执行更新时,为TIMESTAMP列值明确地指定为它原来的值。

另一方面,你可能发现更容易的方法,使用DATETIME列,当新建记录行时以 NOW()初始化该列,以后在对该记录行进行更新时不再处理它。

示例(译者注):

mysql> Create TABLE `tA` (->   `id` int(3) unsigned NOT NULL auto_increment,->     `date1` timestamp(14) NOT NULL,->     `date2` timestamp(14) NOT NULL,->     PRIMARY KEY  (`id`)-> ) TYPE=MyISAM;Query OK, 0 rows affected (0.01 sec)mysql> Insert INTO `tA` SET `id` = 1;Query OK, 1 row affected (0.02 sec)# 没有明确地指定第一个 timestamp 列值,该列值被设为插入的当前时刻# 没有明确地指定其它的 timestamp 列值,MySQL 则认为插入的是一个非法值,而该列值被设为0mysql> Insert INTO `tA` S (2, NOW(), NULL);Query OK, 1 row affected (0.01 sec)mysql> Select * FROM `tA`;+----+----------------+----------------+| id | date1          | date2          |+----+----------------+----------------+|  1 | 20030503104118 | 00000000000000 ||  2 | 20030503104254 | 20030503104254 |+----+----------------+----------------+2 rows in set (0.00 sec)mysql> Update `tA` SET `id` = 3 Where `id` = 1;Query OK, 1 row affected (0.01 sec)Rows matched: 1  Changed: 1  Warnings: 0# 对某一记录行进行了更新,第一个 timestamp 列值也将被更新mysql> Update `tA` SET `id` = 2 Where `id` = 2;Query OK, 0 rows affected (0.00 sec)Rows matched: 1  Changed: 0  Warnings: 0# MySQL 忽略了这次操作,第一个 timestamp 列值不会被更新mysql> Select * FROM `tA`;+----+----------------+----------------+| id | date1          | date2          |+----+----------------+----------------+|  3 | 20030503104538 | 00000000000000 ||  2 | 20030503104254 | 20030503104254 |+----+----------------+----------------+2 rows in set (0.00 sec)mysql> Update `tA` SET `id` = 1,`date1`=`date1` Where `id` = 3;Query OK, 1 row affected (0.00 sec)Rows matched: 1  Changed: 1  Warnings: 0# 明确地指定了第一个 timestamp 列值为它原有值,该值将不会被更新mysql> Select * FROM `tA`;+----+----------------+----------------+| id | date1          | date2          |+----+----------------+----------------+|  1 | 20030503104538 | 00000000000000 ||  2 | 20030503104254 | 20030503104254 |+----+----------------+----------------+2 rows in set (0.00 sec)* 以上结果在 MySQL 4.0.12 中测试

 


bitsCN.com
声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
图文详解mysql架构原理图文详解mysql架构原理May 17, 2022 pm 05:54 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于架构原理的相关内容,MySQL Server架构自顶向下大致可以分网络连接层、服务层、存储引擎层和系统文件层,下面一起来看一下,希望对大家有帮助。

mysql怎么替换换行符mysql怎么替换换行符Apr 18, 2022 pm 03:14 PM

在mysql中,可以利用char()和REPLACE()函数来替换换行符;REPLACE()函数可以用新字符串替换列中的换行符,而换行符可使用“char(13)”来表示,语法为“replace(字段名,char(13),'新字符串') ”。

mysql的msi与zip版本有什么区别mysql的msi与zip版本有什么区别May 16, 2022 pm 04:33 PM

mysql的msi与zip版本的区别:1、zip包含的安装程序是一种主动安装,而msi包含的是被installer所用的安装文件以提交请求的方式安装;2、zip是一种数据压缩和文档存储的文件格式,msi是微软格式的安装包。

mysql怎么去掉第一个字符mysql怎么去掉第一个字符May 19, 2022 am 10:21 AM

方法:1、利用right函数,语法为“update 表名 set 指定字段 = right(指定字段, length(指定字段)-1)...”;2、利用substring函数,语法为“select substring(指定字段,2)..”。

mysql怎么将varchar转换为int类型mysql怎么将varchar转换为int类型May 12, 2022 pm 04:51 PM

转换方法:1、利用cast函数,语法“select * from 表名 order by cast(字段名 as SIGNED)”;2、利用“select * from 表名 order by CONVERT(字段名,SIGNED)”语句。

MySQL复制技术之异步复制和半同步复制MySQL复制技术之异步复制和半同步复制Apr 25, 2022 pm 07:21 PM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了关于MySQL复制技术的相关问题,包括了异步复制、半同步复制等等内容,下面一起来看一下,希望对大家有帮助。

带你把MySQL索引吃透了带你把MySQL索引吃透了Apr 22, 2022 am 11:48 AM

本篇文章给大家带来了关于mysql的相关知识,其中主要介绍了mysql高级篇的一些问题,包括了索引是什么、索引底层实现等等问题,下面一起来看一下,希望对大家有帮助。

mysql怎么判断是否是数字类型mysql怎么判断是否是数字类型May 16, 2022 am 10:09 AM

在mysql中,可以利用REGEXP运算符判断数据是否是数字类型,语法为“String REGEXP '[^0-9.]'”;该运算符是正则表达式的缩写,若数据字符中含有数字时,返回的结果是true,反之返回的结果是false。

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
2 周前By尊渡假赌尊渡假赌尊渡假赌
仓库:如何复兴队友
4 周前By尊渡假赌尊渡假赌尊渡假赌
Hello Kitty Island冒险:如何获得巨型种子
4 周前By尊渡假赌尊渡假赌尊渡假赌

热工具

安全考试浏览器

安全考试浏览器

Safe Exam Browser是一个安全的浏览器环境,用于安全地进行在线考试。该软件将任何计算机变成一个安全的工作站。它控制对任何实用工具的访问,并防止学生使用未经授权的资源。

ZendStudio 13.5.1 Mac

ZendStudio 13.5.1 Mac

功能强大的PHP集成开发环境

SublimeText3 英文版

SublimeText3 英文版

推荐:为Win版本,支持代码提示!

禅工作室 13.0.1

禅工作室 13.0.1

功能强大的PHP集成开发环境

Dreamweaver CS6

Dreamweaver CS6

视觉化网页开发工具