MySQL 常用日期函数 实战指南

在数据分析和报表开发中,时间维度的处理是绝对绕不开的一环。无论是计算用户的注册时长,还是按周/月生成数据看板,熟练掌握 MySQL 的日期函数都是必修课。

本文将结合实际业务场景,梳理 MySQL 中最核心、最高频的日期函数,并通过通俗易懂的小例子帮你快速掌握。

目录

[一、 获取当前时间:一切的起点](#一、 获取当前时间:一切的起点)

[二、 日期提取与格式化:让数据更直观](#二、 日期提取与格式化:让数据更直观)

[三、 日期加减运算:时间窗口的计算](#三、 日期加减运算:时间窗口的计算)

[四、 日期差值计算:衡量时间跨度](#四、 日期差值计算:衡量时间跨度)

总结


一、 获取当前时间:一切的起点

在记录数据插入时间或计算"距今多久"时,我们需要获取系统的当前时间。

  • NOW():返回当前的日期和时间(YYYY-MM-DD HH:MM:SS)。
    • 示例 :SELECT NOW(); -- 结果:2026-08-31 11:46:57
  • CURDATE():仅返回当前日期(YYYY-MM-DD)。
    • 示例 :SELECT CURDATE(); -- 结果:2026-08-31
  • CURTIME():仅返回当前时间(HH:MM:SS)。
    • 示例 :SELECT CURTIME(); -- 结果:11:46:57
二、 日期提取与格式化:让数据更直观

原始的时间戳往往不符合展示要求,我们需要对其进行"拆解"或"换装"。

  • YEAR() / MONTH() / DAY():分别提取日期中的年、月、日。
    • 示例 :SELECT MONTH('2026-08-31'); -- 结果:8
  • DATE_FORMAT(date, format):将日期按照指定格式输出,是报表开发的"美颜神器"。
    • 场景:将数据库中的标准时间转换为中文习惯的"2026年08月"格式
    • 示例 :SELECT DATE_FORMAT('2026-08-31', '%Y年%m月'); -- 结果:2026年08月
    • 常用格式符 :%Y (四位年), %m (两位月), %d (两位日), %H (24小时制), %i (分钟), %s (秒)。
三、 日期加减运算:时间窗口的计算
  • DATE_ADD(date, INTERVAL expr unit):在指定日期上增加一段时间。
    • 示例 :SELECT DATE_ADD('2026-08-31', INTERVAL 30 DAY); -- 结果:2026-09-30
  • DATE_SUB(date, INTERVAL expr unit):在指定日期上减去一段时间。
    • 示例 :SELECT DATE_SUB('2026-08-31', INTERVAL 3 MONTH); -- 结果:2026-05-31
四、 日期差值计算:衡量时间跨度

计算两个时间点之间的间隔,是业务逻辑中最常见的需求。

  • DATEDIFF(date1, date2):返回两个日期之间相差的天数 (date1 - date2)。
    • 示例 :SELECT DATEDIFF('2026-08-31', '2026-08-01'); -- 结果:30
  • TIMESTAMPDIFF(unit, datetime1, datetime2):比 DATEDIFF 更强大,可以指定返回的单位(如年、月、小时等)。
    • 示例 :SELECT TIMESTAMPDIFF(YEAR, '2000-08-31', '2026-08-31'); -- 结果:26
总结

MySQL 的日期函数虽然繁多,但核心逻辑只有三个:获取当前时间 、提取/格式化时间 、计算时间差/时间偏移。

希望这篇指南能帮你在处理时间数据时更加游刃有余!如果觉得有用,欢迎点赞收藏~

相关推荐
todoitbo2 小时前
大数据平台如何选时序数据库:用业务 SQL 验证查询、留存和 Spark 链路
大数据·sql·时序数据库
泡海椒2 小时前
JQuickExcel 批量导入:用 importDataInBatch 控制大文件消费边界
数据库·oracle
码流子3 小时前
事件告警延迟拆解:从摄像头到手机通知,延迟卡在哪六个环节
数据库·人工智能·物联网
斯内普吖3 小时前
(开源)校园充电宝租借管理系统实战指南 基于 Java + SSM + Vue + MySQL
java·vue.js·mysql·开源
Q26433650233 小时前
【有源码】基于K-Means算法的航空客户行为分群及异常预订识别研究-基于大数据的航空客户预订行为多维分析与可视化大屏设计
大数据·人工智能·机器学习·数据挖掘·数据分析·spark·kmeans
啵啵啵鱼3 小时前
对数据的增删改查
数据库·mysql·ai·idea·ai编程·navicat·obsidian
靠沿3 小时前
MySQL数据库基础——索引的使用&alter、explain关键字
java·数据库·mysql
赵渝强老师3 小时前
【赵渝强老师】Oracle的行地址:ROWID
数据库·oracle
重生之高冷汉堡包3 小时前
什么是数据中心代理?原理拆解、类型区别、应用场景与选型指南
服务器·网络·数据库·安全·ip
Mortalbreeze3 小时前
MySQL 基础篇(八):复合查询之多表查询、内外连接、子查询
数据库·mysql