简介


日期与时间类型


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


数据库5.7 日期有时间类型_数据库


  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语句如下:

数据库5.7 日期有时间类型_有时间_02

首先创建表TMP3;

数据库5.7 日期有时间类型_数据库_03

向表中插入数据;

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

数据库5.7 日期有时间类型_有时间_04

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

数据库5.7 日期有时间类型_有时间_05

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


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

首先删除表中数据;

DELETE FROM tmp3

数据库5.7 日期有时间类型_数据库_06

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


首先删除表中数据:

数据库5.7 日期有时间类型_ 日期_07

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


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