🥇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); |
| # 其他用法可以查看官网。 |
| # 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 查询所有数据

🥉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); |

【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· TypeScript + Deepseek 打造卜卦网站:技术与玄学的结合
· Manus的开源复刻OpenManus初探
· AI 智能体引爆开源社区「GitHub 热点速览」
· 三行代码完成国际化适配,妙~啊~
· .NET Core 中如何实现缓存的预热?