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 的日期函数虽然繁多,但核心逻辑只有三个:获取当前时间提取/格式化时间计算时间差/时间偏移

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

相关推荐
这个DBA有点耶12 分钟前
同城双活落地的三座山:网络延迟、脑裂预防、反向同步
数据库·架构·dba
Nturmoils12 分钟前
sys_dump 备了库,角色和权限别漏在外面
数据库
接着奏乐接着舞。30 分钟前
【2026】73道Redis 常见面试题与参考答案
数据库·redis·后端·缓存
其实防守也摸鱼2 小时前
权限提升与横向移动:从内网渗透到域控的完整技术图谱
运维·服务器·数据库·安全·github·copilot·渗透
人生百态,人生如梦2 小时前
每日论文解读(9.1)——ReToolSQL:面向鲁棒Text-to-SQL的Agentic强化学习与工具增强两阶段训练框架
数据库·sql
DevOpenClub2 小时前
网页采集如何稳定输出结构化数据:JSON、链接与快照三阶段流水线
数据库·json·api
其实防守也摸鱼3 小时前
免杀与持久化入门:从载荷免杀到隐蔽通道的完整指南
运维·服务器·数据库·安全·github·copilot·渗透
SelectDB3 小时前
统一全文检索与 SQL 分析:Apache Doris 日志分析实践
运维·数据库·掘金技术征文
麻瓜code3 小时前
【MySQL】SQL优化实战:从慢查询定位到查询改写
数据库·sql·mysql