MySQL的时间类型

🥇1.时间类型介绍

时间类型有 DATE、TIME、DATETIME、TIMESTAMP 和 YEAR 。

🥈1.1 DATE

# DATE 类型:
# 这个类型的格式是:'YYYY-MM-DD'
# 这个类型支持的范围:'1000-01-01' ~ '9999-12-31'

🥈1.2 TIME

# TIME 类型:
# 这个类型的格式是:'hh:mm:ss[.fraction]'
# 这个类型支持的范围:'-838:59:59.000000' ~ '838:59:59.000000'

🥈1.3 DATETIME

# DATETIME 类型:
# 这个类型的格式是:'YYYY-MM-DD hh:mm:ss[.fraction]'
# 这个类型支持的范围:'1000-01-01 00:00:00.000000' ~ '9999-12-31 23:59:59.499999'

🥈1.4 TIMESTAMP

# TIMESTAMP 类型:
# 这个类型的格式是:'YYYY-MM-DD hh:mm:ss[.fraction]
# 这个类型支持的范围:'1970-01-01 00:00:01.000000' ~ '2038-01-19 03:14:07.499999'

🥈1.5 YEAR

# YEAR 类型:
# 这个类型的格式是:'YYYY'
# 这个类型支持的范围:'1901' ~ '2155'

🥇2.时间相关的函数

🥈2.1 CURTIME()

# CURTIME()
# 返回值:"hh:mm:ss" 或 "hhmmss"
# 用法:
select CURDATE();
# 返回:2023-09-14

🥈2.2 DATE(expr)

# DATE(expr)
# 返回值:'YYYY-MM-DD'
# 用法:
select date('2023-09-14 22-31-03');
# 返回:2023-09-14

🥈2.3 DATEDIFF(expr1,expr2)

# DATEDIFF(expr1,expr2)
# 以天为单位,计算从一个日期到另一个日期相差的时间。
# 用法:
select datediff('2023-09-15','2023-09-14');
# 返回:1
select datediff('2023-09-14','2023-09-15');
# 返回:-1

🥈2.4 DATE_ADD()

# DATE_ADD()
# 用法:
# 在 2023-09-14 的基础上加一天,执行后的结果:2023-09-15
SELECT DATE_ADD('2023-09-14',INTERVAL 1 DAY);
# 在 2023-09-14 的基础上加一月,执行后的结果:2023-10-14
SELECT DATE_ADD('2023-09-14',INTERVAL 1 MONTH);
# 在 2023-09-14 的基础上加一年,执行后的结果:2024-09-14
SELECT DATE_ADD('2023-09-14',INTERVAL 1 YEAR);
# 其他用法可以查看官网。

🥈2.5 DATE_FORMAT(date,format)

# DATE_FORMAT(date,format)
# 用法:
SELECT DATE_FORMAT('2023-09-14 22:23:12', '%Y %M %D');
# 返回:2023 September 14th
SELECT DATE_FORMAT('2023-09-14 22:23:12', '%x-%m-%d');
# 返回:2023-09-14

# 其他用法可以看官方文档

🥈2.6 DATE_SUB(date,INTERVAL expr unit)

# DATE_SUB(date,INTERVAL expr unit)
# 用法:
# 在 2023-09-14 的基础上减去一天,执行后的结果:2023-09-13
select DATE_SUB('2023-09-14',INTERVAL 1 DAY);

# 在 2023-09-14 的基础上减去一月,执行后的结果:2023-08-14
select DATE_SUB('2023-09-14',INTERVAL 1 Month);

# 在 2023-09-14 的基础上减去一年,执行后的结果:2022-09-14
select DATE_SUB('2023-09-14',INTERVAL 1 YEAR);

🥇3.综合用法:

🥈3.1 建表

create table date_use(
  id int1 auto_increment primary key comment '主键 -- 注意:int1类型能存储的数据比较小',
  username varchar(20),
  birthday datetime comment '生日',
  create_at datetime default current_timestamp comment '记录创建时间',
  update_at datetime default current_timestamp on update current_timestamp comment '记录修改时间,记录发生改变时,时间也会变'
)comment '测试时间表';

🥈3.2 数据添加

insert into date_use(username, birthday) value ('张三1','2023-09-14 02:03:04');
insert into date_use(username, birthday) value ('张三2','2023-09-13 02:03:04');
insert into date_use(username, birthday) value ('张三3','2023-09-13 09:10:04');
insert into date_use(username, birthday) value ('张三4','2023-09-12 02:03:04');
insert into date_use(username, birthday) value ('张三5','2023-09-07 02:03:04');
insert into date_use(username, birthday) value ('张三6','2023-09-07 02:03:03');
insert into date_use(username, birthday) value ('张三7','2023-09-06 02:03:04');
insert into date_use(username, birthday) value ('张三8','2023-08-14 02:03:04');
insert into date_use(username, birthday) value ('张三9','2023-08-15 02:03:04');
insert into date_use(username, birthday) value ('张三10','2023-08-13 02:03:04');

🥈3.3 数据查询

🥉3.3.1 查询所有数据
select * from date_use;

image

🥉3.3.2 查询今天添加的记录
# 这里将 birthday 当做是对应的日期添加的记录。
# 也就是 相当于日常使用中的 create_at 字段中的内容。
# 这篇博客的日期是 2023-09-14

# 查询今天添加的记录
select * from date_use where date(birthday) = CURDATE();

image

🥉3.3.3 查询一周内添加的数据
select * from date_use where birthday >= DATE_SUB(CURDATE(),INTERVAL 7 day);

image

🥉3.3.4 查询一月添加的数据
select * from date_use where birthday >= DATE_SUB(CURDATE(),INTERVAL 1 month);

image

🥉3.3.5 查询一年添加的数据
 select * from date_use where birthday >= DATE_SUB(CURDATE(),INTERVAL 1 YEAR);

image

posted @ 2023-09-14 21:19  wbnyua  阅读(100)  评论(0编辑  收藏  举报