在 MySQL 中专门有日期时间类型可以用来存储日期和时间。包括:date, time, datetime, timestamp, year 几种常用类型
date
date 型是按照常见的年-月-日格式存储日期。以下表为例,整理这部分内容。
插入一条数据,例如:
insert into birthday values ('闫妮', '1971-3-10');
插入后结果如图:
date的存储范围一般为:1000-01-01到9999-12-31,不过在最新版本中即使小于1000年也不会报错了。在填写月日时,如果只有一位数,例如3月,会自动填充0。当格式不匹配,例如只输入了年月没有日时就会被修改成0000-00-00
time
在原来的表基础上增加一列签到列,结构如图:
插入一条数据:
insert into birthday values ('姜超', '1975-03-19', '10:29:10');
范围为-838:59:59-838:59:59,如果输入的格式错误,也会变成00:00:00;
datetime
datetime 就是日期时间类型,将 date 和 time 结合起来。
当然,也可以使用 char 类型来存储,但是 datetime 只用8个字节,而用 char 则需要19个字节
timestamp
timestamp 和 datetime 比较像,默认显示格式相同,宽度为19个字符,它可以设置成默认值 CURRENT_TIMESTAMP,这样在每次插入数据的时候就提取当前的时间,且可以随着时区变化而变化
year
在原来的表上增加一列 year 类型的数据,格式可以是 YYYY 也可以是 YY,但是不推荐后者。year 只有 1 个字节,所以只有 255 个跨度(含一个0000),范围为1901到2155年,不符合的值都会变成0000。如下所示:
如果只填写 2 位,范围位 [00-69] 则会在前面加上 20,如果是 [70-99] 则会在前面加上19。2 位总的范围为:1970-2069,所以不推荐这么写
总结
类型 | 说明 | 标准格式 | 范围 | 存储需求 |
---|---|---|---|---|
date | 日期 | YYYY-MM-DD | 1000-01-01到9999-12-31 | 3字节 |
time | 时间 | HH:MM:SS | -839:59:59到839:59:59 | 3字节 |
datetime | 日期时间 | YYYY-MM-DD HH:MM:SS | 1000-01-01 00:00:00到<br />9999-12-31 23:59:59 | 8字节 |
timestamp | 时间戳 | YYYY-MM-DD HH:MM:SS | 1970-01-01 00:00:00到<br />2038-01-19 03:14:07 | 4字节 |
year | 年份 | YYYY / YY(不推荐) | 1901到2115 | 1字节 |