如何在mysql中进行日期计算_mysql日期计算函数

发布时间 - 2026-01-01 00:00:00    点击率:
MySQL提供DATE_ADD()、DATE_SUB()实现日期增减,DATEDIFF()和TIMESTAMPDIFF()计算日期差,YEAR()等函数提取日期部分,NOW()、DATE_FORMAT()处理当前时间与格式化。

MySQL 提供了丰富且实用的日期计算函数,能轻松完成加减天数、计算间隔、提取日期部分等操作,无需手动转换时间戳或复杂逻辑。

加减日期:DATE_ADD() 和 DATE_SUB()

这是最常用的日期增减方式,支持年、月、日、小时、分钟等多种单位。

  • DATE_ADD(date, INTERVAL expr unit):给日期加上指定间隔
  • DATE_SUB(date, INTERVAL expr unit):从日期中减去指定间隔

例如:

SELECT DATE_ADD('2025-05-01', INTERVAL 10 DAY); → '2025-05-11'

SELECT DATE_SUB(NOW(), INTERVAL 1 MONTH); → 当前时间往前推一个月

注意:对月份做加减时会自动处理月末边界(如1月31日 + 1 month → 2月28日或29日)。

计算两个日期之间的差值:DATEDIFF() 和 TIMESTAMPDIFF()

DATEDIFF(end_date, start_date) 只返回两个日期之间的**天数差**(忽略时分秒),结果为整数,end 在前、start 在后。

SELECT DATEDIFF('2025-12-25', '2025-01-01'); → 359

TIMESTAMPDIFF(unit, start_date, end_date) 更灵活,可按年、月、日、小时等单位计算精确差值(单位在前,起止顺序与 DATEDIFF 相反)。

SELECT TIMESTAMPDIFF(YEAR, '1990-06-15', NOW()); → 年龄(按年份差)

SELECT TIMESTAMPDIFF(MONTH, '2025-03-10', '2025-05-20'); → 14

提取和构造日期:YEAR()、MONTH()、DAY()、MAKEDATE() 等

用于拆解或组合日期值:

  • YEAR(date)、MONTH(date)、DAY(date)、HOUR(time):提取对应部分
  • MAKEDATE(year, dayofyear):用年份和一年中的第几天构造日期(如 MAKEDATE(2025, 60) → '2025-02-29')
  • STR_TO_DATE(str, format):将字符串按格式转为日期(如 STR_TO_DATE('05/20/2025', '%m/%d/%Y'))

这些函数常配合 WHERE 或 GROUP BY 使用,比如按年份统计:GROUP BY YEAR(create_time)

当前时间与日期格式化:NOW()、CURDATE()、DATE_FORMAT()

NOW() 返回当前日期时间,CURDATE() 只返回日期部分,CURTIME() 只返回时间部分。

DATE_FORMAT(date, format) 用于按需格式化输出,常用格式符包括:

  • %Y:4位年份,%y:2位年份
  • %m:01–12 月,%M:英文全称(January)
  • %d:01–31 日,%W:星期全名

例如:SELECT DATE_FORMAT(NOW(), '%Y年%m月%d日 %H:%i');


# mysql  # 格式化输出  # datediff  # select  # date  # format  # 字符串  # 加减  # 按年  # 在前  # 这是  # 一个月  # 几天  # 英文  # 月末  # 最常用  # 年中 


相关栏目: 【 网站优化151355 】 【 网络推广146373 】 【 网络技术251813 】 【 AI营销90571


相关推荐: 北京的网站制作公司有哪些,哪个视频网站最好?  Laravel如何实现API速率限制?(Rate Limiting教程)  如何在宝塔面板创建新站点?  php在windows下怎么调试_phpwindows环境调试操作说明【操作】  深圳防火门网站制作公司,深圳中天明防火门怎么编码?  悟空浏览器如何设置小说背景色_悟空浏览器背景色设置【方法】  购物网站制作费用多少,开办网上购物网站,需要办理哪些手续?  如何在阿里云ECS服务器部署织梦CMS网站?  如何在Windows服务器上快速搭建网站?  Laravel Eloquent:优雅地将关联模型字段扁平化到主模型中  邀请函制作网站有哪些,有没有做年会邀请函的网站啊?在线制作,模板很多的那种?  Laravel怎么实现前端Toast弹窗提示_Laravel Session闪存数据Flash传递给前端【方法】  齐河建站公司:营销型网站建设与SEO优化双核驱动策略  手机软键盘弹出时影响布局的解决方法  Laravel怎么做数据加密_Laravel内置Crypt门面的加密与解密功能  Python数据仓库与ETL构建实战_Airflow调度流程详解  猎豹浏览器开发者工具怎么打开 猎豹浏览器F12调试工具使用【前端必备】  如何在阿里云购买域名并搭建网站?  网站视频制作书签怎么做,ie浏览器怎么将网站固定在书签工具栏?  Android 常见的图片加载框架详细介绍  如何在IIS7上新建站点并设置安全权限?  Laravel如何使用缓存系统提升性能_Laravel缓存驱动和应用优化方案  零基础网站服务器架设实战:轻量应用与域名解析配置指南  深圳网站制作平台,深圳市做网站好的公司有哪些?  如何在IIS中新建站点并配置端口与IP地址?  香港服务器网站测试全流程:性能评估、SEO加载与移动适配优化  Laravel如何实现一对一模型关联?(Eloquent示例)  Laravel如何实现用户密码重置功能?(完整流程代码)  如何为不同团队 ID 动态生成多个“认领值班”按钮  手机网站制作平台,手机靓号代理商怎么制作属于自己的手机靓号网站?  ChatGPT怎么生成Excel公式_ChatGPT公式生成方法【指南】  Laravel怎么发送邮件_Laravel Mail类SMTP配置教程  如何在 Telegram Web View(iOS)中防止键盘遮挡底部输入框  JavaScript数据类型有哪些_如何准确判断一个变量的类型  如何在自有机房高效搭建专业网站?  米侠浏览器网页背景异常怎么办 米侠显示修复  如何用PHP快速搭建高效网站?分步指南  html5的keygen标签为什么废弃_替代方案说明【解答】  Laravel怎么解决跨域问题_Laravel配置CORS跨域访问  Laravel怎么在Controller之外的地方验证数据  企业在线网站设计制作流程,想建设一个属于自己的企业网站,该如何去做?  在线教育网站制作平台,山西立德教育官网?  如何在IIS7中新建站点?详细步骤解析  EditPlus 正则表达式 实战(3)  Laravel如何获取当前登录用户信息_Laravel Auth门面使用与Session用户读取【技巧】  javascript中的数组方法有哪些_如何利用数组方法简化数据处理  如何用AI帮你把自己的生活经历写成一个有趣的故事?  Laravel如何实现用户注册和登录?(Auth脚手架指南)  Laravel API资源(Resource)怎么用_格式化Laravel API响应的最佳实践  JS去除重复并统计数量的实现方法