简介


日期与时间类型


mysql中有多种表示日期的数据类型,主要有:DATETIME DATE TIMESTAMP,DATE .每一个类型都有合法的取值范围,当指定确实不合法的值时系统将“零”值插入到数据库中。


2c969c9da2bdc6f5ca0f223df6fb57cc.png-wh_


  1. YEAR

  2. YEAR类型是一个单字节类型用于表示年,在存储时只需要1个字节。可以使用各种格式指定YEAR值,如下所示:

(1)以4位字符串或者四位数字格式表示的YEAR,范围为‘1901’-‘2155’。输入格式‘YYYY’或者YYYY,列如,输入‘2010’或2010,插入到数据库的值均为2010.

(2)以2位字符串格式表示的YEAR,范围为‘00’到‘99’。‘00-‘69’和‘70’-‘99’范围的值分别被转换为2000-2069和1970-1999范围的YEAR值。‘0’与‘00’的作用相同。插入超过取值范围的值将转被换位2000.

(3)以2位数字表示的YEAR,范围为1-99。1-69和70-99范围值分别为转换为2001-2069和1970-1999的范围YEAR值。


实例:创建数据表tmp3,定义数据类型为YEAR的字段y,向表中插入值2010,‘2010’‘2016’,sql语句如下:

5fd0fdf53926e4f2bfac9c6db3cac105.png-wh_

首先创建表TMP3;

2d0208b37ff01d92232447be86d6cadb.png-wh_

向表中插入数据;

语句执行后,MYSQL给出了一条错误提示,使用show查看错误信息:

d6963070456fe4945ecc71be37d7f7f5.png-wh_

可以看到,插入的第三个值2166超过了YEAR类型的取值范围,此时不能正常执行插入操作,查看结果:

48b9be82f97332a228d0195fe1f39041.png-wh_

由结果可以看到,当插入为数值类型的2010或者字符串类型的‘2010’时,都正确的存储到了数据库中;为当插入值‘2166’时,由于超出了YEAR类型的取值范围,因此,不能插入值。


例:5向tmp3表中y字段插入2位字符串表示的YEAR值,分别为‘0’,‘00’‘77’和‘10’,SQL语句如下:

首先删除表中数据;

DELETE FROM tmp3

bea7a70246c8b07d1fffab66ba355842.png-wh_

由结果可以看到,字符串‘0’和‘00’的作用相同,分别都转换成了2000年;‘77’转换为1977;‘10’转换为2010.


首先删除表中数据:

fc9853ca9527c503fe7165a3d1558545.png-wh_

由结果可以看到,0被转换为0000;78被转换为1978;11被转换为2011.


总结!数据库应该多练习孰能生巧!