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

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

相关推荐
大猫和小黄13 小时前
MySQL锁与MVCC深度解析
mysql·mvcc·
lbb 小魔仙13 小时前
OpenClaw + cpolar 实战:远程 NAS、分享小游戏、RDP,再配置公网 AI 入口
数据库·人工智能·redis·oracle·prometheus
paopaokaka_luck13 小时前
智慧社区综合服务小程序(人脸识别、AI问答、Echarts图形化分析)
前端·javascript·spring boot·spring·数据分析·echarts
李白客14 小时前
数据融合平台怎么选:批流一体、实时同步与数据质量的 7 个维度
数据库·数据库架构
数据库小学妹14 小时前
MySQL库存扣减实战:原子UPDATE、分桶方案与锁范围分析
数据库·后端·mysql
旺仔不是程序员14 小时前
LIMIT 1:PostgreSQL 只取一行的高效查询姿势
数据库·后端·sql
烟沙九洲15 小时前
Redis 缓存穿透、缓存击穿、缓存雪崩
数据库·redis
Elastic 中国社区官方博客15 小时前
jina-ocr-v1:在低成本 GPU 上实现更快速的文档解析
大数据·数据库·elasticsearch·搜索引擎·全文检索·jina
Linux-lucky15 小时前
39-41-Linux学习之旅之redis缓存基础与NFS基础
linux·运维·mysql·ubuntu