MySQL 时间运算
在 MySQL 中,对 datetime / timestamp 加“分钟”,标准、推荐的写法是使用 DATE_ADD() 或 + INTERVAL。
1. 给 datetime 加 N 分钟(最常用)
SELECT DATE_ADD('2026-01-14 15:00:00', INTERVAL 10 MINUTE);或等价写法:
SELECT '2026-01-14 15:00:00' + INTERVAL 10 MINUTE;
结果:
2026-01-14 15:10:00
2. 给字段加分钟
SELECT
created_at,
DATE_ADD(created_at, INTERVAL 30 MINUTE) AS new_time
FROM orders;
3. 用在 WHERE 条件中(非常常见)
判断是否“过期 N 分钟”
SELECT *
FROM orders
WHERE created_at + INTERVAL 15 MINUTE < NOW();
等价:
WHERE DATE_ADD(created_at, INTERVAL 15 MINUTE) < NOW()
4. 减分钟(反向)
SELECT NOW() - INTERVAL 20 MINUTE;
5. 动态分钟(来自字段)
SELECT
start_time + INTERVAL duration MINUTE
FROM events;
️ duration 必须是 整数列
6. 和时间戳(秒)一起用
SELECT FROM_UNIXTIME(ts) + INTERVAL 5 MINUTE;
7. 常见错误(千万别踩)
错误写法
created_at + 10
会变成 数字相加,结果是错的
错误写法
DATE_ADD(created_at, '10 MINUTE')
语法错误
8. 索引 & 性能提示(重要)
️ 下面写法 无法使用索引:
WHERE created_at + INTERVAL 15 MINUTE < NOW()
索引友好写法(推荐)
WHERE created_at < NOW() - INTERVAL 15 MINUTE
在 MySQL 中,显示当前时间 / 日期 / 时间戳 常用函数如下
1. 当前日期 + 时间(最常用)
SELECT NOW();
示例结果:
2026-01-14 15:42:10
2. 当前日期(无时间)
SELECT CURDATE();
2026-01-14
3. 当前时间(无日期)
SELECT CURTIME();
15:42:10
4. 当前 Unix 时间戳(秒)
SELECT UNIX_TIMESTAMP();
1736840530