文章目录
🥇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;
🥉3.3.2 查询今天添加的记录
# 这里将 birthday 当做是对应的日期添加的记录。 # 也就是 相当于日常使用中的 create_at 字段中的内容。 # 这篇博客的日期是 2023-09-14 # 查询今天添加的记录 select * from date_use where date(birthday) = CURDATE();
🥉3.3.3 查询一周内添加的数据
select * from date_use where birthday >= DATE_SUB(CURDATE(),INTERVAL 7 day);
🥉3.3.4 查询一月添加的数据
select * from date_use where birthday >= DATE_SUB(CURDATE(),INTERVAL 1 month);
🥉3.3.5 查询一年添加的数据
select * from date_use where birthday >= DATE_SUB(CURDATE(),INTERVAL 1 YEAR);