You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

MySQL DATE_ADD加1小时后如何将分钟规整为15或30

MySQL 时间加1小时后按15分钟刻度向上规整实现方案

实现逻辑

按照需求拆分为两步处理,全程兼容跨小时、跨天的边界场景:

  • 第一步:使用DATE_ADD()函数为原始时间增加1小时,严格满足指定函数的使用要求
  • 第二步:将偏移后的时间按15分钟为步长向上取整,自动对齐到0分/15分/30分/45分的刻度,秒数自动统一置为0,不需要额外处理秒值

可直接使用的SQL代码

假设存储原始时间的字段名为original_time,所属表为your_table,查询语句如下:

SELECT
    original_time,
    FROM_UNIXTIME(
        CEIL(UNIX_TIMESTAMP(DATE_ADD(original_time, INTERVAL 1 HOUR)) / 900) * 900
    ) AS target_time
FROM your_table;

如果需要直接计算单个字面量时间,可以直接传值测试:

-- 测试第一个示例值
SELECT FROM_UNIXTIME(
    CEIL(UNIX_TIMESTAMP(DATE_ADD('2022-05-19 22:13:28', INTERVAL 1 HOUR)) / 900) * 900
);
-- 输出:2022-05-19 23:15:00

-- 测试第二个示例值
SELECT FROM_UNIXTIME(
    CEIL(UNIX_TIMESTAMP(DATE_ADD('2022-05-19 22:24:00', INTERVAL 1 HOUR)) / 900) * 900
);
-- 输出:2022-05-19 23:30:00

代码说明

  • 900秒对应15分钟的时间长度,是本次15分钟刻度规整的步长基准
  • CEIL()函数实现向上取整逻辑:只要当前时间超过某个15分钟刻度,哪怕只超1秒,也自动进位到下一个刻度
  • 基于UNIX时间戳计算,天然支持跨小时、跨天、跨月的时间进位,不需要额外写分支判断边界情况

示例验证

用需求给出的两个测试用例校验结果:

测试用例1:原始时间 '2022-05-19 22:13:28'

  1. DATE_ADD加1小时后得到中间时间 '2022-05-19 23:13:28'
  2. 按15分钟向上取整后输出 '2022-05-19 23:15:00',与预期结果完全一致

测试用例2:原始时间 '2022-05-19 22:24:00'

  1. DATE_ADD加1小时后得到中间时间 '2022-05-19 23:24:00'
  2. 按15分钟向上取整后输出 '2022-05-19 23:30:00',与预期结果完全一致

内容的提问来源于stack exchange,提问作者user13432717

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.03 11:36:29