如何为数据表中的日期列统一减去5天并完成表更新?
把日期列所有日期统一减5天的更新操作方案
没问题!我来给你梳理下不同主流数据库里怎么实现这个需求——把表中日期列的所有日期都改成早5天的日期,顺便也给你讲清楚具体的实现逻辑~
MySQL/MariaDB 实现方式
在MySQL里,有两种常用写法,效果完全一致:
-- 写法1:用DATE_SUB函数 UPDATE 你的表名 SET 日期列名 = DATE_SUB(日期列名, INTERVAL 5 DAY); -- 写法2:直接用减号加INTERVAL语法 UPDATE 你的表名 SET 日期列名 = 日期列名 - INTERVAL 5 DAY;
PostgreSQL 实现方式
PostgreSQL里直接给日期列减去一个时间间隔即可,注意间隔的写法要加单引号:
UPDATE 你的表名 SET 日期列名 = 日期列名 - INTERVAL '5 days';
SQL Server 实现方式
SQL Server用DATEADD函数,第二个参数传负数就代表减去对应的天数:
UPDATE 你的表名 SET 日期列名 = DATEADD(day, -5, 日期列名);
Oracle 实现方式
Oracle处理日期非常直接,日期类型的值直接加减数字就代表天数,写法很简洁:
UPDATE 你的表名 SET 日期列名 = 日期列名 - 5;
重要提醒!
在执行UPDATE操作之前,一定要先验证结果是否正确,避免误改数据。你可以先跑一条SELECT语句预览转换后的日期:
-- 以PostgreSQL为例,其他数据库把日期运算部分换成对应语法即可 SELECT 日期列名, 日期列名 - INTERVAL '5 days' AS 调整后的日期 FROM 你的表名;
确认所有日期都正确减去5天后,再执行UPDATE。另外如果日期列有NULL值,这些操作不会改变NULL,因为任何和NULL的运算结果还是NULL。
内容的提问来源于stack exchange,提问作者ArUn GuPta




