当前位置: Oracle DBA培训网-优技培训 >> MySQL培训 > MySQL培训教程 >

MySQL入门知识:日期类型和时间类型

MySQL入门知识:日期类型和时间类型

MySQL入门知识:日期类型和时间类型,MySQL提供几种时间和日期类型,包括日期和时间类型是DATETIME、DATE、TIMESTAMP、TIME和YEAR。对这几种时间和日期类型概述如下:

DATA

取值范围:“1000-01-01”到“9999-12-31”

存储需求:3字节

TIME

取值范围:“-838:59:59”到“838:59:59”

存储需求:3字节

DATATIME

取值范围:“1000-01-01 00:00:00”到“9999-12-31 23:59:59”

存储需求:8字节

TIMESTAMP[(M)]

取值范围:“19700101000000”到2037年的某个时刻

存储需求:4字节

YEAR[(M)]

取值范围:1901到2155

存储需求:1字节

Y2K问题和日期类型

MySQL本身Y2K安全的,但是呈交给MySQL的输入值可能不是。一个包含2位年份值的任何输入是由二义性的,因为世纪是未知的。这样的值必须被解释成4位形式,因为MySQL内部使用4位存储年份。

对于DATETIME, DATE, TIMESTAMP和YEAR类型,MySQL使用下列规则的解释二义性的年份值:

在范围00-69的年值被变换到2000-2069。

在范围70-99的年值被变换到1970-1999。

记得这些规则仅仅提供对于你数据的含义的合理猜测。如果MySQL使用的启发规则不产生正确的值,你应该提供无二义的包含4位年值的输入。

DATETIME,DATE和TIMESTAMP类型

DATETIME, DATE和TIMESTAMP类型是相关的。本节描述他们的特征,他们是如何类似的而又不同的。

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

DATE类型用在你仅需要日期值时,没有时间部分。MySQL检索并且以'YYYY-MM-DD'格式显示DATE值,支持的范围是'1000-01-01'到'9999-12-31'。

TIMESTAMP列类型提供一种类型,你可以使用它自动地用当前的日期和时间标记INSERT或UPDATE的操作。如果你有多个TIMESTAMP列,只有第一个自动更新。TIMESTAMP值可以从1970的某时的开始一直到2037年,精度为一秒,其值作为数字显示。

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

列没有明确地在一个INSERT或LOAD DATA INFILE语句中指定。

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

你明确地设定TIMESTAMP列为NULL.

例如,我们创建一个表:

CREATE TABLE my_test

(

id INT,

ts TIMESTAMP

)

然后,用如下语句录入数据:

INSERT my_test VALUES(1,20010101000000)

INSERT my_test(id) VALUES(2)

然后,查询表中的内容:

SELECT * from my_test

你可以看到内容:

+------+----------------+
| id   | ts        |
+------+----------------+
|  1 | 20010101000000  |
|  2 | 20010113165713  |
+------+----------------+

TIME类型

MySQL检索并以'HH:MM:SS'格式显示TIME值(或对大小时值,'HHH:MM:SS'格式)。TIME值的范围可以从'-838:59:59'到'838:59:59'。小时部分可能很大的的原因是TIME类型不仅可以被使用在表示一天的时间(它必须是不到24个小时),而且用在表示在2个事件之间经过的时间或时间间隔(它可以是比24个小时大些,或甚至是负值)。

你能用多中格式指定TIME值:

作为'HH:MM:SS'格式的一个字符串。“宽松”的语法被允许--任何标点符号可用作时间部分的分隔符,例如,'10:11:12'和'10.11.12'是等价的。

作为没有分隔符的'HHMMSS'格式的一个字符串,如果它作为一个时间解释。例如,'101112'被理解为'10:11:12',但是'109712'是不合法的(它有无意义的分钟部分)并变成'00:00:00'。

作为HHMMSS格式的一个数字,如果它能解释为一个时间。例如,101112被理解为'10:11:12'。

YEAR类型

YEAR类型是一个有效的利用1字节类型表示年份。MySQL检索并且以YYYY格式显示YEAR值,其范围是1901到2155。 如果,只想保存日期,那么YEAR比其它类型比如SAMLLINT更为有效。

你能用多种格式指定YEAR值,既可以用4为字符,也可以使用4为字符串,当然要在1901到2155范围之内。

作为YEAR的一个优点是,你可以指定一个在'00'到'99'范围的2位字符串或者一个在'00'到'69'和'70'到'99'范围的值被变换到在2000到2069范围和1970到1999的YEAR值。

技术沙龙MORE+

标签错误:<!-- #Label# labelId=20160707140604 moduleId=1 classId=12231768634 orderby=2 fields=url,title,u_info attribute= datatypeId=22192428132 recordCount=3 pageSize= <htmlTemplate><dt><img src="/images/index_26${index}.jpg" width="100" height="62" /><a href="$url" title="${title}">${title}</a><span>${api.left(u_info,60)}</span></dt></htmlTemplate> -->
我要参加技术沙龙