为了方便在数据库中存储日期和时间,MySQL 提供了表示日期和时间的数据类型分别是 YEAR、DATE、TIME、DATETIME 和 TIMESTAMP。下表列举了这些 MySQL 中日期和时间数据类型所对应的字节数、取值范围、日期格式以及零值。
数据类型 | 字节数 | 取值范围 | 日期格式 | 零值 |
YEAR | 1 | 1901~2155 | YYYY | 0000 |
DATE | 4 | 1000-01-01~9999-12-3 | YYYY-MM-DD | 0000-00-00 |
TIME | 3 | -838:59:59~838:59:59 1000-01-01 | HH:MM:SS | 00:00:00 |
DATETIME | 8 | 00:00:00~9999-12-31 23:59:59 | YYYY-MM-DDHH:MM:SS | 0000-00-00 00:00:00 |
TIMESTAMP | 4 | 1970-01-01 00:00:01~2038-01-19 03:14:07 | YYYY-MM- DDHH:MM:SS | 0000-00-00 00:00:00 |
从表中可以看出,每种日期和时间类型的取值范围都是不同的。需要注意的是如果插入的数值不合法,系统会自动将对应的零值插入数据库中。
1. YEAR 类型
YEAR 类型用于表示年份,在 MySQL中,可以使用以下三种格式指定 YEAR 类型的值。
(1)使用4位字符串或数字表示,范围为 ' 1901 ' ~ ' 2155 ' 或 1901~2155。例如,输入 ' 2014 ' 或 2014,插入到数据库中的值均为 2014 。
(2)使用两位字符串表示,范围为 ' 00 ' ~ ' 99 ' ,其中, ' 00 ’ ~ ' 69 ' 范围的值会被转换为 2000~2069 范围的 YEAR值, ' 70 ’~ ' 99 ' 范围的值会被转换为 1970~1999 范围的 YEAR 值。例如,输入 ' 14 ' ,插入到数据库中的值为 2014 。
(3)使用两位数字表示,范围为 1~99,其中,1~69 范围的值会被转换为 2001~2069 范围的 YEAR值,70~99 范围的值会被转换为 1970~1999 范围的 YEAR 值。例如,输入 14,插入到数据库中的值为 2014。
需要注意的是,当使用 YEAR 类型时,一定要区分 ' 0 ' 和 0。因为字符串格式的 ' 0 ' 表示的 YEAR 值是 2000,而数字格式的 0 表示的 YEAR 值是 0000。
2. DATE 类型
DATE类型用于表示日期值,不包含时间部分。在 MySQL中,可以使用以下 4 种格式指定 DATE 类型的值。
(1)以 ' YYYY-MM-DD ' 或者 ' YYYYMMDD ' 字符串格式表示。
例如,输人 ' 2014-01-21 ' 或 ' 20140121 ',插入数据库中的日期都为 2014-01-21。
(2)以 ' YY-MM-DD ' 或者 ' YYMMDD ' 字符串格式表示。YY 表示的是年,范围为 ' 00 ' ~ ' 99 ',其中 ' 00 ' ~' 69 ' 范围的值会被转换为 2000~2069 范围的值, ' 70 ’ ~ ' 99 ' 范围的值会被转换为 1970~1999 范围的值。
例如,输入 ' 14-01-21 ' 或 ' 140121 ',插人数据库中的日期都为 2014-01-21。
(3)以 YY-MM-DD 或者 YYMMDD 数字格式表示。
例如,输入 14-01-21或140121,插人数据库中的日期都为 2014-01-21
(4)使用 CURRENT DATE 或者 NOW() 表示当前系统日期。
3.TIME 类型
TIME 类型用于表示时间值,它的显示形式一般为 HH:MM:SS,其中,HH 表示小时,MM 表示分,SS表示秒。在 MySQL中,可以使用以下三种格式指定 TIME 类型的值。
(1)以 ' D HH;MM;SS ' 字符串格式表示。其中,D表示日,可以取 0~34 之间的值插入数据时,小时的值等于(Dx24+HH)。
例如,输人 ' 2 11;30.50 ' ,插人数据库中的日期为 59:30:50。
(2)以 ' HHMMSS ' 字符串格式或者 HHMMSS 数字格式表示。
例如,输人 ' 345454 ' 或 345454,插入数据库中的日期为 34:54:54。
(3)使用CURRENT_TIME或 NOWO)输人当前系统时间。
DATETIME类型用于表示日期和时间,它的显示形式为 ' YYYY-MM-DD HH ' 。
4. DATETIME 类型
DATETIME类型用于表示日期和时间,它的显示形式为:' YYYY-MM-DD HH MM:SS ' , 其中,YYYY 表示年,MM 表示月,DD 表示日,HH 表示小时,MM 表示分,SS表示秒。在 MySQL 中,可以使用以下 4 种格式指定 DATETIME 类型的值。
(1)以 ' YYYY-MM DD HH;MM;SS ' 或者 ' YYYYMMDDHHMMSS ' 字符串格式表示的日期和时间。取值范围为 ' 1000-01-01 00;00:00 ' - ' 9999-12-31 23:59;59 ' 例如,输入 ' 2014-01-22 09:01;23 ' 或 20140122090123 ,插人数据库中的 DATETIME 值都为 2014-01-22 09:01:23。
(2)以 ' YY-MM-DD HH:MM;SS ' 或者 ' YYMMDDHHMMSS ' 字符串格式表示的日值都为 2014-01-22 09;01:23。日期和时间,其中 YY表示年,取值范围为 ' 00 ' ~ ' 99 ’ 。与 DATE 类型中的 YY 相同,' 00 ' ~ ' 69 ' 范围的值会被转换为 2000~2069 范围的值,' 70 ’ ~ ' 99 ' 范围的值会被转换为 1970~1999 范围的值。
(3)以 YYYYMMDDHHMMSS 或者 YYMMDDHHMMSS 数字格式表示的日期和时间。例如,插入 20140122090123 或者 140122090123 ,插入数据库中的 DATETIME 值都为 2014-01-22 09:01:23。
(4)使用 NOW( ) 来输入当前系统的日期和时间。
5.TIMESTAMP 类型
TIMESTAMP 类型用于表示日期和时间,它的显示形式与 DATETIME 相同,但取值范围比 DATETIME 小。下面介绍几种 TIMESTAMP 类型与 DATATIME 类型不同的形式,具体如下。
(1)使用CURRENT_TIMESTAMP 来输人系统当前日期和时间
(2)输入 NULL时,系统会输人系统当前日期和时间。
(3)无任何输入时,系统会输入系统当前日期和时间。