SQL 日期函数如何加减日期?

来源:IPIPP.com作者:辉辉头衔:草根站长
导读:本期聚焦于小伙伴创作的《SQL 日期函数如何加减日期?》,敬请观看详情,探索知识的价值。以下视频、文章将为您系统阐述其核心内容与价值。如果您觉得《SQL 日期函数如何加减日期?》有用,将其分享出去将是对创作者最好的鼓励。

在SQL的实际使用中,日期的加减操作是非常高频的需求,无论是计算会员有效期、统计时间范围内的数据,还是生成时间序列,都需要用到对应的日期函数。不同数据库厂商提供的日期处理函数语法有所区别,下面分别介绍主流数据库的实现方式。

SQL 日期函数如何加减日期?

SQL Server 中的日期加减

SQL Server 提供了 DATEADD 函数来实现日期的加减,该函数可以指定要加减的时间单位,比如年、月、日、小时等。

DATEADD 函数的语法格式为:

DATEADD(datepart, number, date)

参数说明:

  • datepart:指定要加减的时间单位,比如 year 表示年,month 表示月,day 表示日,hour 表示小时等。
  • number:要加减的数值,正数表示加,负数表示减。
  • date:原始的日期时间值。

下面是具体的使用示例:

-- 当前日期加3天
SELECT DATEADD(day, 3, GETDATE()) AS add_three_days;

-- 指定日期减1个月
SELECT DATEADD(month, -1, '2024-05-20') AS sub_one_month;

-- 日期加2小时
SELECT DATEADD(hour, 2, '2024-05-20 10:30:00') AS add_two_hours;

MySQL 中的日期加减

MySQL 提供了多个函数支持日期加减,常用的有 DATE_ADDDATE_SUB 以及直接使用加减运算符的方式。

使用 DATE_ADD 和 DATE_SUB 函数

DATE_ADD 用于日期加操作,DATE_SUB 用于日期减操作,语法格式类似:

DATE_ADD(date, INTERVAL expr unit)
DATE_SUB(date, INTERVAL expr unit)

参数说明:

  • date:原始日期时间值。
  • expr:要加减的数值。
  • unit:时间单位,比如 DAY、MONTH、YEAR、HOUR 等。

使用示例:

-- 当前日期加7天
SELECT DATE_ADD(CURDATE(), INTERVAL 7 DAY) AS add_seven_days;

-- 指定日期减2年
SELECT DATE_SUB('2024-05-20', INTERVAL 2 YEAR) AS sub_two_years;

-- 日期加30分钟
SELECT DATE_ADD('2024-05-20 14:00:00', INTERVAL 30 MINUTE) AS add_thirty_minutes;

使用加减运算符

MySQL 还支持直接用 + 或 - 运算符对日期进行加减,语法更简洁:

-- 日期加10天
SELECT '2024-05-20' + INTERVAL 10 DAY AS add_ten_days;

-- 日期减5小时
SELECT '2024-05-20 18:00:00' - INTERVAL 5 HOUR AS sub_five_hours;

PostgreSQL 中的日期加减

PostgreSQL 的日期加减操作相对灵活,支持直接使用运算符,也支持 INTERVAL 类型的时间间隔计算。

直接使用加减运算符的示例:

-- 当前日期加15天
SELECT CURRENT_DATE + INTERVAL '15 days' AS add_fifteen_days;

-- 指定日期减3个月
SELECT '2024-05-20'::date - INTERVAL '3 months' AS sub_three_months;

-- 时间加1小时20分钟
SELECT '2024-05-20 09:00:00'::timestamp + INTERVAL '1 hour 20 minutes' AS add_time;

也可以使用 DATE_TRUNC 配合加减操作处理更复杂的日期计算,比如获取当前月的第一天:

SELECT DATE_TRUNC('month', CURRENT_DATE) AS first_day_of_month;

日期加减的注意事项

  • 不同数据库的时间单位写法有差异,比如 SQL Server 用 day,MySQL 用 DAY,PostgreSQL 用 days,使用时需要对应数据库的要求填写。
  • 进行月份加减时,如果原始日期是当月最后一天,比如 1月31日加1个月,不同数据库的处理逻辑可能不同,部分数据库会返回2月28日或29日,需要根据业务需求验证结果。
  • 日期加减时如果超出合法日期范围,比如 2024-02-30 这种不存在的日期,函数会返回错误或 NULL,需要提前做好日期合法性校验。
实际开发中建议先在小范围数据测试日期加减的结果,确认符合业务预期后再应用到正式环境,避免出现时间计算错误导致的数据问题。

SQL日期函数日期加减DATEADD修改时间:2026-07-16 00:18:38

免责声明:​ 已尽一切努力确保本网站所含信息的准确性。网站内容多为原创整理与精心编撰,观点力求客观中立。本站旨在免费分享,内容仅供个人学习、研究或参考使用。若引用了第三方作品,版权归原作者所有。如内容涉及您的权益,请联系我们处理。
内容垂直聚焦
专注技术核心技术栏目,确保每篇文章深度聚焦于实用技能。从代码技巧到架构设计,为用户提供无干扰的纯技术知识沉淀,精准满足专业提升需求。
知识结构清晰
覆盖从开发到部署的全链路。AI、前端、编程、数据库、服务器、建站、系统层层递进,构建清晰学习路径,帮助用户系统化掌握开发与运维所需的核心技术。
深度技术解析
拒绝泛泛而谈,深入技术细节与实践难点。无论是数据库优化还是服务器配置,均结合真实场景与代码示例进行剖析,致力于提供可直接应用于工作的解决方案。
专业领域覆盖
精准对应开发生命周期。从前端界面到后端编程,从数据库操作到服务器运维,形成完整闭环,一站式满足全栈工程师和运维人员的技术需求。
即学即用高效
内容强调实操性,步骤清晰、代码完整。用户可根据教程直接复现和应用于自身项目,显著缩短从学习到实践的距离,快速解决开发中的具体问题。
持续更新保障
专注既定技术方向进行长期、稳定的内容输出。确保各栏目技术文章持续更新迭代,紧跟主流技术发展趋势,为用户提供经久不衰的学习价值。