mysql字段的时间类型分为5种:DATE,DATETIME,TIME,TIMESTAMP,YEAR;

下面就分别介绍这几种时间类型的区别


类型 字节大小 范围 格式 零值 用途
DATE 3 1000-01-01/9999-12-32 YYYY-MM-DD 0000-00-00 日期值
DATETIME 8 1000-01-01 00:00:00/9999-12-32 23:59:59 YYYY-MM-DD hh:mm:ss 0000-00-00 00:00:00 混合日期和时间值
TIME 3 -838:59:59/838:59:59 hh:mm:ss 00:00:00 时间值
TIMESTAMP 4 1970-01-01 00:00:01/2038-01-19 03:14:07 YYYY:MM:DD: hh:mm:ss 0000-00-00 00:00:00 混合日期和时间值,时间戳
YEAR 1 1901/2155 YYYY 0000 年份值

每个时间类型都有一个有效范围和一个零值,当指定的类型的值超过有效范围时,就会使用零值

YEAR

该类型表示,格式为YYYY

有三种表示方法

  1. 直接使用四位数字或字符串,范围是1901-2155,输入的格式为'YYYY'或YYYY,如输入‘2011’或2011就回直接保存为2011,若超过范围就会表示为0000
  2. 使用两位的字符串表示,如果插入为'00'-'69'则表示为2000-2069,若插入'70-99'则表示为1970-1999.如输入'22'保存为2222,输入88保存为1988.'0'和'00'的效果一样
  3. 使用两位数字,如果插入为00-69则表示为2000-2069,若插入70-99则表示为1970-1999.如输入22保存为2222,输入88保存为1988.如果是0则表示为0000.注意该处和字符串的情况不一样

TIME

该类型表示时:分:秒,尽管时间范围为0~23,但是为了表示某些特殊的时间,mysql将小时的范围扩大了,并且支持负值。

对于TIME类型复制,标准的格式为HH:MM:SS,但不一定要这个格式

如果插入的格式为D HH:MM:SS则类似插入了D*24+HH:MM:SS,比如插入2 23:12:12,相当于71:12:12

如果插入的格式为HHMM或则SS,那么其他位置就赋零值.比如30 相当于00:00:30,比如11:30 相当于11:30:00

mysql中,系统可以自动识别HHMMSS转化为标准格式.我们可以通过CURRENT_TIME()获取当前的TIME

DATE

该类型表示年-月-日,标准格式为YYYY-MM-DD,但是mysql中还支持一些不严谨的格式:比如YYYY/MM/DD等其他的符号来分割

在插入数据的数据的也可以使用YY-MM-DD 年份的转换和上面的YEAR类型的规则一样的

可以使用CURRENT_DATE() 函数获取当前的DATE

DATETIME

该类型表示YYYY-MM-DD hh:mm:ss,可以看出DATETIME类型的结合体.所以赋值的规则时和上面DATETIME的时一样的

TIMESTAMP

该类型表示为YYYY-MM DD hh:mm:ss,取值范围比DATETIME小,因此输入时一定要注意输入值的范围,超过范围会当作零值处理。
哈哈,到2038年后就别用这个类型了

这只是一个简单的区分说明,具体mysql时间类型的说明 请参考 官方文档

图片描述

扫描关注,查看更多文章,提高编程能力


一步
1.7k 声望407 粉丝