月底截断
月底截断
-- MySQL / PostgreSQL 行为一致:先加月再截到当月最后一天
SELECT DATE '2024-01-31' + INTERVAL 1 MONTH; -- 2024-02-29(PG)
-- MySQL: SELECT '2024-01-31' + INTERVAL 1 MONTH; -- 2024-02-29month 与 day 不等价
month 与 day 不等价
SELECT DATE '2024-03-01' + INTERVAL '1 month' AS a, -- 2024-04-01
DATE '2024-03-01' + INTERVAL '30 days' AS b; -- 2024-03-31
-- PG 还支持乘法:INTERVAL '1 day' * 7| 加月规则 | 结果日超过目标月天数时截到该月最后一天(29/30/31 自动处理) |
|---|---|
| 链路坑 | 连续加月会继承上次截断后的日期,如 1-31 → 2-29 → 3-29 |
| DST | 带时区时间戳加 1 day 与加 24 hours 在夏令时切换日结果不同 |