亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

MySQL多列日期同步更新的五種實現(xiàn)方法

 更新時間:2025年05月27日 09:13:25   作者:sg_knight  
當(dāng)遇到會員有效期、服務(wù)周期、數(shù)據(jù)版本等需要批量更新日期字段時,如何精準控制日期部分而保留原始時間?所以本文給大家介紹了MySQL多列日期同步更新的五種實現(xiàn)方法,需要的朋友可以參考下

場景痛點:

當(dāng)遇到會員有效期、服務(wù)周期、數(shù)據(jù)版本等需要批量更新日期字段時,如何精準控制日期部分而保留原始時間?今天教你一套DBA都在用的高效解決方案!

一、基礎(chǔ)版 - DATE_ADD函數(shù)法(推薦)

UPDATE user_subscription 
SET 
    expire_date = DATE_ADD(expire_date, INTERVAL DATEDIFF('2023-09-01', DATE(expire_date)) DAY),
    last_renew = DATE_ADD(last_renew, INTERVAL DATEDIFF('2023-09-01', DATE(last_renew)) DAY)
WHERE user_type = 'VIP';

原理:通過計算新舊日期差值,僅修改日期部分

二、進階版 - 時間拼接法(跨時區(qū)場景適用)

UPDATE audit_log 
SET 
    start_time = STR_TO_DATE(CONCAT('2023-09-01 ', TIME(start_time)), '%Y-%m-%d %H:%i:%s'),
    end_time = STR_TO_DATE(CONCAT('2023-09-01 ', TIME(end_time)), '%Y-%m-%d %H:%i:%s') 
WHERE log_month = 8;

亮點:完美解決日期時間分離需求,特別適合跨天日志處理

三、條件更新法 - CASE語句實戰(zhàn)

UPDATE product_schedule 
SET
    manufacture_date = CASE 
        WHEN TIME(manufacture_date) IS NOT NULL 
        THEN CONCAT('2023-Q3', ' ', TIME(manufacture_date)) 
        ELSE '2023-09-01' END,
    inspection_date = DATE_FORMAT(NOW(), '%Y-%m-%d') + INTERVAL HOUR(inspection_date) HOUR 
                       + INTERVAL MINUTE(inspection_date) MINUTE
WHERE factory_id = 1024;

特殊場景:混合處理包含空值的時間字段

四、全表更新加速方案(百萬級數(shù)據(jù)處理)

-- 啟用事務(wù)保證一致性
START TRANSACTION;

-- 分批次更新(每次5萬條)
UPDATE financial_records 
SET 
    value_date = DATE_FORMAT(value_date, '2023-09-01 %H:%i:%s'),
    clear_date = DATE_ADD(clear_date, INTERVAL 2 DAY) 
WHERE id BETWEEN 1 AND 50000;

COMMIT;

性能提示:添加索引字段條件 + 合理分批避免鎖表

五、終極技巧 - 存儲過程批量處理

DELIMITER $$
CREATE PROCEDURE batch_update_dates(IN new_date DATE)
BEGIN
    DECLARE done INT DEFAULT 0;
    DECLARE cur_id INT;
    
    DECLARE cur CURSOR FOR 
        SELECT id FROM orders WHERE status = 'pending';
        
    DECLARE CONTINUE HANDLER FOR NOT FOUND SET done = 1;
    
    OPEN cur;
    
    read_loop: LOOP
        FETCH cur INTO cur_id;
        IF done THEN
            LEAVE read_loop;
        END IF;
        
        UPDATE orders 
        SET 
            estimate_date = CONCAT(new_date, ' ', TIME(estimate_date)),
            actual_date = DATE_ADD(actual_date, INTERVAL DATEDIFF(new_date, DATE(actual_date)) DAY)
        WHERE id = cur_id;
    END LOOP;
    
    CLOSE cur;
END
$$
DELIMITER ;

適用場景:需要復(fù)雜業(yè)務(wù)邏輯的周期性更新任務(wù)

高頻問題QA

  • 如何回滾誤操作?

    • 提前開啟事務(wù)/Binlog備份
    • 使用SELECT ... INTO OUTFILE備份原數(shù)據(jù)
  • 時區(qū)差異如何處理?

SET time_zone = '+8:00';
UPDATE ... CONVERT_TZ(create_time,'UTC','Asia/Shanghai')
  • 性能優(yōu)化建議

    • WHERE條件必須使用索引字段
    • 避免全表掃描(EXPLAIN分析執(zhí)行計劃)
    • 凌晨低峰期執(zhí)行大批量操作

到此這篇關(guān)于MySQL多列日期同步更新的五種實現(xiàn)方法的文章就介紹到這了,更多相關(guān)MySQL多列日期同步更新內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • Navicat for MySql可視化導(dǎo)入CSV文件

    Navicat for MySql可視化導(dǎo)入CSV文件

    這篇文章主要為大家詳細介紹了Navicat for MySql可視化導(dǎo)入CSV文件,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2019-05-05
  • Mysql啟動報ERROR:2002的分析與解決

    Mysql啟動報ERROR:2002的分析與解決

    這篇文章主要給大家介紹了關(guān)于Mysql啟動時報ERROR:2002問題的分析與解決方法,文中通過示例代碼介紹將該問題分析的非常詳細,對同樣遇到這個問題的朋友們具有一定的參考學(xué)習(xí)價值,需要的朋友們下面來一起看看吧。
    2017-08-08
  • mysql視圖的學(xué)習(xí)和使用方式

    mysql視圖的學(xué)習(xí)和使用方式

    這篇文章主要介紹了mysql視圖的學(xué)習(xí)和使用方式,具有很好的參考價值,希望對大家有所幫助,如有錯誤或未考慮完全的地方,望不吝賜教
    2016-09-09
  • Centos6.5在線安裝mysql 8.0詳細教程

    Centos6.5在線安裝mysql 8.0詳細教程

    這篇文章主要為大家介紹了Centos6.5在線安裝 mysql 8.0詳細教程,具有一定的參考價值,感興趣的小伙伴們可以參考一下
    2016-11-11
  • MySQL之MHA高可用配置及故障切換實現(xiàn)詳細部署步驟

    MySQL之MHA高可用配置及故障切換實現(xiàn)詳細部署步驟

    這篇文章主要介紹了MySQL之MHA高可用配置及故障切換實現(xiàn)詳細部署步驟,文中通過示例代碼介紹的非常詳細,對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2021-03-03
  • MySQL的安裝與配置詳細教程

    MySQL的安裝與配置詳細教程

    MySQL是一種關(guān)系數(shù)據(jù)庫管理系統(tǒng),所使用的 SQL 語言是用于訪問數(shù)據(jù)庫的最常用的,本文主要以Mysql免安裝版為例,幫助大家解決安裝與配置mysql的步驟
    2021-06-06
  • mysql5.7.42到mysql8.2.0的升級(rpm方式)

    mysql5.7.42到mysql8.2.0的升級(rpm方式)

    隨著數(shù)據(jù)量的增長和業(yè)務(wù)需求的變更,我們可能需要升級MySQL,本文主要介紹了mysql5.7.42到mysql8.2.0的升級(rpm方式),具有一定的參考價值,感興趣的可以了解一下
    2024-03-03
  • MySQL曝中間人攻擊Riddle漏洞可致用戶名密碼泄露的處理方法

    MySQL曝中間人攻擊Riddle漏洞可致用戶名密碼泄露的處理方法

    Riddle漏洞存在于DBMS Oracle MySQL中,攻擊者可以利用漏洞和中間人身份竊取用戶名和密碼。下面小編給大家?guī)砹薓ySQL曝中間人攻擊Riddle漏洞可致用戶名密碼泄露的處理方法,需要的朋友參考下吧
    2018-01-01
  • 詳解MySQL和Redis如何保證數(shù)據(jù)一致性

    詳解MySQL和Redis如何保證數(shù)據(jù)一致性

    MySQL與Redis都是常用的數(shù)據(jù)存儲和緩存系統(tǒng),為了提高應(yīng)用程序的性能和可伸縮性,很多應(yīng)用程序?qū)ySQL和Redis一起使用,其中MySQL作為主要的持久存儲,而Redis作為主要的緩存,那么本文就給大家介紹一下MySQL和Redis如何保證數(shù)據(jù)一致性,需要的朋友可以參考下
    2023-08-08
  • 記錄無法安裝mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解決辦法

    記錄無法安裝mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-G

    在aliyun上安裝MySQL時由于上次錯誤卸載mysql 導(dǎo)致校驗文件出問題。下面小編給大家分享記錄無法安裝mysql-Invalid GPG Key from file:/etc/pki/rpm-gpg/RPM-GPG-KEY-mysql的解決方法,需要的朋友參考下吧
    2017-01-01

最新評論