MySQL中的日期与时间类型,主要包括:YEAR、TIME、DATE、DATETIME、TIMESTAMP,下表中列出了这几种类型的属性。

类型名称

日期格式

日期范围

占用空间

YEAR

YYYY

1901 ~ 2155

1字节

TIME

HH:MM:SS

-838:59:59 ~ 838:59:59

3字节

DATE

YYYY-MM-DD

1000-01-01 ~ 9999-12-3

3字节

DATETIME

YYYY-MM-DD HH:MM:SS

1000-01-01 00:00:00 ~ 9999-12-31 23:59:59

8字节

TIMESTAMP

YYYY-MM-DD HH:MM:SS

1970-01-01 00:00:01 UTC ~ 2038-01-19 03:14:07  UTC

4字节

一、YEAR

YEAR类型可以使用三种格式表示:

1. 以4位数字或字符串表示,两者效果相同,表示范围1901~2155,插入超出范围的数据会报错。

2. 以2位字符串格式表示,范围为‘00’~‘99’。‘00’~‘69’表示2000~2069,‘70’~‘99’表示1970~1999。‘0’和‘00’都会被识别为2000,超出范围的数据也会被识别为2000。

3. 以2位数字格式表示,范围为1~99。1~69表示2001~2069,70~99表示1970~1999。但0值会被识别为0000,这和2位字符串被识别为2000有所不同。

下面是以上三种表示格式的例子:

mysql> create table test1 (id year);
Query OK, 0 rows affected (0.04 sec)
mysql> desc test1;
+-------+---------+------+-----+---------+-------+
| Field | Type    | Null | Key | Default | Extra |
+-------+---------+------+-----+---------+-------+
| id    | year(4) | YES  |     | NULL    |       |
+-------+---------+------+-----+---------+-------+
1 row in set (0.01 sec)

(1)以4位字符串或数字格式表示

mysql> insert into test1 values (2010),('2010');
Query OK, 2 rows affected (0.02 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> select * from test1;
+------+
| id   |
+------+
| 2010 |
| 2010 |
+------+
2 rows in set (0.00 sec)mysql> insert into test1 values (2156);
ERROR 1264 (22003): Out of range value for column 'id' at row 1

(2)以2位字符串格式表示

mysql> truncate table test1;
Query OK, 0 rows affected (0.04 sec)mysql> insert into test1 values ('0'),('00'),('10'),('77');
Query OK, 4 rows affected (0.03 sec)
Records: 4  Duplicates: 0  Warnings: 0mysql> select * from test1;
+------+
| id   |
+------+
| 2000 |
| 2000 |
| 2010 |
| 1977 |
+------+
4 rows in set (0.00 sec)

(3)以2位数字格式表示

mysql> truncate table test1;
Query OK, 0 rows affected (0.02 sec)mysql> insert into test1 values (0),(00),(10),(77);
Query OK, 4 rows affected (0.01 sec)
Records: 4  Duplicates: 0  Warnings: 0mysql> select * from test1;
+------+
| id   |
+------+
| 0000 |
| 0000 |
| 2010 |
| 1977 |
+------+
4 rows in set (0.00 sec)

二、TIME

TIME类型可以用多种格式表示,如:

‘D HH:MM:SS':D表示天数,在插入表中时会折算成小时,即:D*24+HH:MM:SS。

'HHMMSS':省略冒号,但各个时间要有意义,比如‘128012’分钟部分会被识别为‘12:80:12’,80分钟是没有意义的,插入会报错。

'HH:MM':表示小时分钟,如‘12:08’表示12小时8分钟。

'SS':表示秒。

需要注意的是:如果输入‘1208’,虽然我们想让MySQL识别为12小时8分钟,但在这种格式下,MySQL识别为‘00:12:08’。

下面是几个例子:

mysql> create table test2 (id time);
Query OK, 0 rows affected (0.32 sec)mysql> desc test2;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| id    | time | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+
1 row in set (0.02 sec)
mysql> insert into test2 values ('10:47:23'),('23:13'),('2 11:11'),('3 05'),('10');
Query OK, 5 rows affected (0.10 sec)
Records: 5  Duplicates: 0  Warnings: 0mysql> select * from test2;
+----------+
| id       |
+----------+
| 10:47:23 |
| 23:13:00 |
| 59:11:00 |
| 77:00:00 |
| 00:00:10 |
+----------+
5 rows in set (0.00 sec)mysql> insert into test2 values ('3 5');
ERROR 1292 (22007): Incorrect time value: '3 5' for column 'id' at row 1
mysql> truncate table test2;
Query OK, 0 rows affected (0.24 sec)mysql> insert into test2 values ('105821'),(105821),('0');
Query OK, 3 rows affected (0.10 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> insert into test2 values (108013);
ERROR 1292 (22007): Incorrect time value: '108013' for column 'id' at row 1mysql> select * from test2;
+----------+
| id       |
+----------+
| 10:58:21 |
| 10:58:21 |
| 00:00:00 |
+----------+
3 rows in set (0.00 sec)

三、DATE

DATE类型可以通过如下格式表示:

‘YYYY-MM-DD','YYYYMMDD',YYYYMMDD,'YY-MM-DD','YYMMDD',YYMMDD

其中当使用两位表示年份时,分00~69和70~99两种,参考YEAR类型。

下面是几个DATE类型的例子:

mysql> create table test3 (id date);
Query OK, 0 rows affected (0.25 sec)mysql> desc test3;
+-------+------+------+-----+---------+-------+
| Field | Type | Null | Key | Default | Extra |
+-------+------+------+-----+---------+-------+
| id    | date | YES  |     | NULL    |       |
+-------+------+------+-----+---------+-------+
1 row in set (0.02 sec)
mysql> insert into test3 values ('1992-03-08'),('19920308'),(19920308);
Query OK, 3 rows affected (0.11 sec)
Records: 3  Duplicates: 0  Warnings: 0mysql> select * from test3;
+------------+
| id         |
+------------+
| 1992-03-08 |
| 1992-03-08 |
| 1992-03-08 |
+------------+
3 rows in set (0.00 sec)
mysql> truncate table test3;
Query OK, 0 rows affected (0.23 sec)
mysql> insert into test3 values ('92-03-08'),('920308'),(920308),('10-12-20');
Query OK, 4 rows affected (0.09 sec)
Records: 4  Duplicates: 0  Warnings: 0mysql> select * from test3;
+------------+
| id         |
+------------+
| 1992-03-08 |
| 1992-03-08 |
| 1992-03-08 |
| 2010-12-20 |
+------------+
4 rows in set (0.00 sec)

四、DATETIME

DATETIME类型,包含日期和时间部分。可以使用引号字符串或数字两种,年份可以是4位,也可以是2位,在此不再赘述,请参照上面的DATE和TIME类型。下面是几个例子:

mysql> create table test4 (id datetime);
Query OK, 0 rows affected (0.30 sec)mysql> desc test4;
+-------+----------+------+-----+---------+-------+
| Field | Type     | Null | Key | Default | Extra |
+-------+----------+------+-----+---------+-------+
| id    | datetime | YES  |     | NULL    |       |
+-------+----------+------+-----+---------+-------+
1 row in set (0.01 sec)
mysql> insert into test4 values ('1992-03-08 11:11:11'),(19920308111111),('19920308111111'),(20101231080808);
Query OK, 4 rows affected (0.10 sec)
Records: 4  Duplicates: 0  Warnings: 0mysql> select * from test4;
+---------------------+
| id                  |
+---------------------+
| 1992-03-08 11:11:11 |
| 1992-03-08 11:11:11 |
| 1992-03-08 11:11:11 |
| 2010-12-31 08:08:08 |
+---------------------+
4 rows in set (0.00 sec)
mysql> truncate table test4;
Query OK, 0 rows affected (0.19 sec)mysql> insert into test4 values (920308111111),('92-03-08 11:11:11');
Query OK, 2 rows affected (0.11 sec)
Records: 2  Duplicates: 0  Warnings: 0mysql> select * from test4;
+---------------------+
| id                  |
+---------------------+
| 1992-03-08 11:11:11 |
| 1992-03-08 11:11:11 |
+---------------------+
2 rows in set (0.00 sec)

五、TIMESTAMP

TIMESTAMP类型和DATETIME类型的表示格式相同,存储4个字节(比DATETIME少),取值范围少于DATETIME类型。TIMESTAMP和DATETIME最大不同于:TIMESTAMP根据时区显示时间。如果不明白可以看下面的例子:

mysql> create table test5 (id timestamp);
Query OK, 0 rows affected (0.27 sec)mysql> desc test5;
+-------+-----------+------+-----+-------------------+-----------------------------+
| Field | Type      | Null | Key | Default           | Extra                       |
+-------+-----------+------+-----+-------------------+-----------------------------+
| id    | timestamp | NO   |     | CURRENT_TIMESTAMP | on update CURRENT_TIMESTAMP |
+-------+-----------+------+-----+-------------------+-----------------------------+
1 row in set (0.01 sec)mysql> insert into test5 values (NOW());
Query OK, 1 row affected (0.06 sec)mysql> select * from test5;
+---------------------+
| id                  |
+---------------------+
| 2018-03-28 13:16:09 |
+---------------------+
1 row in set (0.00 sec)#设置为东十区,比东八区快两个小时。
mysql> set time_zone='+10:00';
Query OK, 0 rows affected (0.00 sec)mysql> select * from test5;
+---------------------+
| id                  |
+---------------------+
| 2018-03-28 15:16:09 |
+---------------------+
1 row in set (0.00 sec)

总结:日期与时间类型上面说的差不多了,需要补充一点:可以使用current_date(当前日期)、current_time(当前时间)、now()(当前日期和时间,根据字段类型显示日期或者时间),向表中插入当前的日期或者时间点。

【MySQL-5.7】日期与时间类型相关推荐

  1. MySQL中的日期和时间类型

    文章目录 1 MySQL中的日期和时间类型 1 MySQL中的日期和时间类型 日期与时间类型是为了方便在数据库中存储日期和时间而设计的,数据库有多种表示日期和时间的数据类型.其中,YEAR类型表示年, ...

  2. Mysql中的日期与时间类型

    MySQL有多种表示日期和时间的数据类型,不同的版本可能有所差异,MySQL8.0版本支持的日期和时间类型主要有:YEAR类型.TIME类型.DATE类型.DATETIME类型和TIMESTAMP类型 ...

  3. MySQL DTAETIME、TIMESTAMP、DATE、TIME、YEAR(日期和时间类型)

    MySQL 中有多处表示日期的数据类型:YEAR.TIME.DATE.DTAETIME.TIMESTAMP.当只记录年信息的时候,可以只使用 YEAR 类型. 每一个类型都有合法的取值范围,当指定确定 ...

  4. 4、(日期和时间类型)DTAETIME、TIMESTAMP、DATE、TIME、YEAR

    MySQL 中有多处表示日期的数据类型:YEAR.TIME.DATE.DTAETIME.TIMESTAMP. 当只记录年信息的时候,可以只使用 YEAR 类型. 每一个类型都有合法的取值范围,当指定确 ...

  5. mysql如何查询日期与时间

    前言: 在项目开发中,一些业务表字段经常使用日期和时间类型,而且后续还会牵涉到这类字段的查询.关于日期及时间的查询等各类需求也很多,本篇文章简单讲讲日期及时间字段的规范化查询方法. 1.日期和时间类型 ...

  6. mysql 日期_「5」学习MySQL日期与时间类型发现:要养成注重细节的习惯

    在前面的学习中我们提到过字段类型这个概念,本篇的主题就是来讲一种常用而相对复杂的类型:日期与时间. MySQL中表示日期与时间的数据类型有很多种,但主要的不外乎下面五种: 记住上面表中的"范 ...

  7. mysql日期和时间类型_MySQL日期和时间类型

    MySQL中存储日和和时间,使用日期和时间类型. 提供的包括YEAR.DATE.TIME.DATETIME和TIMESTAMP. YEAR 占用:1字节 取值范围:1901~2155 日期格式:YYY ...

  8. MySQL日期和时间类型

    MySQL中存储日和和时间,使用日期和时间类型. 提供的包括YEAR.DATE.TIME.DATETIME和TIMESTAMP. YEAR 占用:1字节 取值范围:1901~2155 日期格式:YYY ...

  9. mysql 日期和时间类型

    日期和时间类型 表示时间值的日期和时间类型为DATETIME.DATE.TIMESTAMP.TIME和YEAR. 每个时间类型有一个有效值范围和一个"零"值,当指定不合法的MySQ ...

最新文章

  1. LeetCode 873. 最长的斐波那契子序列的长度 题目详解
  2. 2台xenserver组成的资源池开启HA存在的问题
  3. rac_安装软件时报版本号过高问题
  4. mingw w64 v8.0.0_使用Visual Studio Code和MinGW编译运行C++代码
  5. 交叉熵代价函数cross-entropy
  6. 云开发听说过没? Compilr 屌爆的在线开发工具 -_-#
  7. 晶圆级封装行业调研报告 - 市场现状分析与发展前景预测
  8. 烂泥:SQL Server 2005数据库安装
  9. 关于无序分类变量量化的处理思考
  10. linux clock()_对比python与linux中时间管理的三件工具calender clock datetime
  11. win10 tensorflow 和numpy兼容性问题 No module named ‘numpy.core._multiarray_umath‘
  12. 记录一下 MacBook 中 texlive 的安装路径
  13. python大神年薪_我程序员年薪 80 万被亲戚鄙视不如在二本教书的博士生?
  14. 微信淘宝客查券返利机器人搭建教程分享
  15. 麒麟V10图形界面安装与运行人大金仓数据库
  16. 2022-05微软漏洞通告
  17. linux防病毒软件_十大Linux最佳防病毒软件-Linux防病毒软件列表!
  18. python京东预约抢购_Python参考代码:京东抢券脚本
  19. 活动星投票网络文明公益广告网络评选微信的投票方式线上免费投票
  20. 罗云彬:实现水波特效的代码例子

热门文章

  1. 电容器在电路中的作用
  2. MyReport报表引擎2.7.4.0新功能
  3. iview vue 打包图标不显示_VueCLI3.0干货系列之集成iview
  4. 权限设计(资源权限和数据权限)
  5. hibernate在不联网或者网络异常时不能解析配置文件
  6. Autofac Webapi 的依赖注入
  7. Struts的文件上传与下载
  8. 手写token解析器、语法解析器、LLVM IR生成器(GO语言)
  9. css选择器参考手册
  10. vue-cli入门之项目结构分析