有這樣一個場景:數據庫還款計劃表有到期還款日字段,正常是每月2日。但這個字段有些是每月1日,現需要統一改成2日,可以用到DATE_ADD函數,但是執行時需要注意:只能執行一次
DATE_ADD(date,INTERVAL expr type)
具體語句:
select * from ms_repayment_plan where substr(loan_pmt_due_date,9,2)='01'; # 先查出數據,01結尾5條數據
UPDATE ms_repayment_plan SET loan_pmt_due_date=DATE_ADD(loan_pmt_due_date,INTERVAL 1 DAY)
where substr(loan_pmt_due_date,9,2)='01'; # 然後更新2019-12-01變成2019-12-02
上面的sql語句用到兩個函數:
SUBSTR(str FROM pos FOR len)-->substr(loan_pmt_due_date,9,2)='01'表示從loan_pmt_due_date字段第9個字符開始截取2個字符串
DATE_ADD(date,INTERVAL expr type)-->loan_pmt_due_date=DATE_ADD(loan_pmt_due_date,INTERVAL 1 DAY)表示對字段loan_pmt_due_date的時間增加1天
date 參數是合法的日期表達式。expr 參數是您希望添加的時間間隔。
type 參數可以是下列值:
Type 值 |
---|
MICROSECOND |
SECOND |
MINUTE |
HOUR |
DAY |
WEEK |
MONTH |
QUARTER |
YEAR |
SECOND_MICROSECOND |
MINUTE_MICROSECOND |
MINUTE_SECOND |
HOUR_MICROSECOND |
HOUR_SECOND |
HOUR_MINUTE |
DAY_MICROSECOND |
DAY_SECOND |
DAY_MINUTE |
DAY_HOUR |
YEAR_MONTH |
把問題變得更復雜一點:假設有兩個借款,其中一個借款1的到期還款日爲2日,借款2的到期還款日爲10日。這個字段loan_pmt_due_date日期有多個。此時我們的DATE_ADD函數是無法處理這個問題的,下篇文章介紹另外一個函數DATE_FORMAT處理此問題。