首页 > 编程笔记 > MySQL笔记 阅读:22

MySQL DATE类型的用法(附带实例)

MySQL 中的 DATE 类型用在仅需要日期值时,没有时间部分,在存储时需要 3 字节,日期格式为:
YYYY-MM-DD
其中,YYYY 表示年,MM 表示月,DD 表示日。

在给 DATE 类型的字段赋值时,可以使用字符串类型或者数字类型,只要符合 DATE 的日期格式即可。

1) 以“YYYY-MM-DD”或者“YYYYMMDD”字符串格式表示的日期,取值范围为 1000-01-01~9999-12-3。例如,输入“2012-12-31”或者“20121231”,插入数据库的日期都为 2012-12-31。

2) 以“YY-MM-DD”或者“YYMMDD”字符串格式表示的日期,这里 YY 表示两位的年值。MySQL 使用以下规则解释两位年值:
  1. 00~69 范围的年值被转换为 2000~2069;
  2. 70~99 范围的年值被转换为 1970~1999。

例如,输入“12-12-31”,插入数据库的日期为 2012-12-31;输入“981231”,插入数据的日期为 1998-12-31。

3) 以 YY-MM-DD 或者 YYMMDD 数字格式表示的日期。与前面类似,00~69 范围的年值被转换为 2000~2069,70~99 范围的年值被转换为 1970~1999。

例如输入 12-12-31,插入数据库的日期为 2012-12-31;输入 981231,插入数据库的日期为 1998-12-31。

4) 使用 CURRENT_DATE 或者 NOW(),插入系统当前日期。

【实例 1】创建数据表 tmp5,定义数据类型为 DATE 的字段 d,向表中插入“YYYY-MM-DD”和“YYYYMMDD”字符串格式的日期。
1) 创建表tmp5:
MySQL> CREATE TABLE tmp5(d DATE);

2) 向表中插入“YYYY-MM-DD”和“YYYYMMDD”格式的日期:
MySQL> INSERT INTO tmp5 values('1998-08-08'),('19980808'),('20101010');

3) 查看插入结果:
MySQL> SELECT * FROM tmp5;
+------------+
| d          |
+------------+
| 1998-08-08 |
| 1998-08-08 |
| 2010-10-10 |
+------------+
可以看到,各个不同类型的日期值都被正确地插入数据表中。

【实例 2】向表 tmp5 中插入“YY-MM-DD”和“YYMMDD”字符串格式的日期。
1) 删除表中的数据:
DELETE FROM tmp5;

2) 向表中插入“YY-MM-DD”和“YYMMDD”格式的日期:
mysql> INSERT INTO tmp5 values ('99-09-09'),( '990909'), ('000101') ,('111111');

3) 查看插入结果:
mysql> SELECT * FROM tmp5;
+-------------+
| d           |
+-------------+
| 1999-09-09  |
| 1999-09-09  |
| 2000-01-01  |
| 2011-11-11  |
+-------------+

【实例 3】向表 tmp5 中插入 YYYYMMDD 和 YYMMDD 数字格式日期。
1) 删除表中的数据:
DELETE FROM tmp5;

2) 向表中插入 YYYYMMDD 和 YYMMDD 格式的日期:
mysql> INSERT INTO tmp5 values (19990909),(990909), ( 000101) ,( 111111);

3) 查看插入结果:
mysql> SELECT * FROM tmp5;
+-------------+
| d           |
+-------------+
| 1999-09-09  |
| 1999-09-09  |
| 2000-01-01  |
| 2011-11-11  |
+-------------+

【实例 4】向表 tmp5 中插入系统当前日期。
1) 删除表中的数据:
DELETE FROM tmp5;

2) 向表中插入系统当前日期:
mysql> INSERT INTO tmp5 values( CURRENT_DATE() ),( NOW() );

3) 查看插入结果:
mysql> SELECT * FROM tmp5;
+-------------+
| d           |
+-------------+
| 2024-08-09  |
| 2024-08-09  |
+-------------+
CURRENT_DATE 只返回当前日期值,不包括时间部分;NOW() 函数返回日期和时间值,在保存到数据库时,只保留日期部分。

相关文章