如何在MySQL中不使用adddate函数给日期添加天数?
MySQL日期添加指定天数(禁用ADDDATE函数)的替代方案
以下是几种可行的实现方式:
使用DATE_ADD函数
DATE_ADD是ADDDATE的标准同义词,功能完全一致,只是写法不同:SELECT DATE_ADD('2024-01-01', INTERVAL 100 DAY);执行后会返回
2024-04-10,和ADDDATE('2024-01-01',100)结果完全相同。通过UNIX时间戳转换计算
先将日期转为UNIX时间戳(秒级),加上指定天数对应的秒数,再转换回日期格式:SELECT FROM_UNIXTIME(UNIX_TIMESTAMP('2024-01-01') + 100 * 24 * 3600);注意:这种方法受UNIX时间戳范围限制,仅适用于1970-01-01到2038-01-19之间的日期,超出该范围会出现错误。
日期数值化计算(不推荐,复杂度高)
把日期转为YYYYMMDD格式的数值,手动计算天数进位后再转回日期,这种方式需要处理月份天数、闰年等逻辑,代码繁琐且易出错,示例如下(仅作演示):SELECT STR_TO_DATE( CAST( FLOOR((CAST(DATE_FORMAT('2024-01-01', '%Y%m%d') AS UNSIGNED) + 100) / 10000) * 10000 + FLOOR(((CAST(DATE_FORMAT('2024-01-01', '%Y%m%d') AS UNSIGNED) + 100) % 10000) / 100) * 100 + ((CAST(DATE_FORMAT('2024-01-01', '%Y%m%d') AS UNSIGNED) + 100) % 100) AS CHAR), '%Y%m%d' );实际场景中不建议使用这种方法,维护成本太高。
内容的提问来源于stack exchange,提问作者Victor Esteban
相关产品推荐
相关产品推荐

