Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> MySQL

Cập nhật cột DATETIME trong MySQL: cộng thêm 10 năm 3 tháng 22 ngày 10 giờ 30 phút

MySQL cho phép cộng/trừ khoảng thời gian (interval) trực tiếp cho cột DATETIME/TIMESTAMP bằng từ khóa INTERVAL. Có thể cộng nhiều đơn vị khác nhau trong một câu lệnh.

Cú pháp

UPDATE ten_bang
SET cot_datetime = cot_datetime
    + INTERVAL 10 YEAR
    + INTERVAL 3 MONTH
    + INTERVAL 22 DAY
    + INTERVAL 10 HOUR
    + INTERVAL 30 MINUTE;

Ví dụ minh họa

Tạo bảng thời gian đến:

mysql> CREATE TABLE DemoTable1509 (ArrivalTime DATETIME);
mysql> INSERT INTO DemoTable1509 VALUES
    -> ('2018-01-21 10:20:30'),
    -> ('2019-04-01 11:00:00'),
    -> ('2015-12-12 05:45:20');

Cập nhật cộng thêm khoảng thời gian phức tạp:

mysql> UPDATE DemoTable1509
    -> SET ArrivalTime = ArrivalTime
    ->     + INTERVAL 10 YEAR
    ->     + INTERVAL 3 MONTH
    ->     + INTERVAL 22 DAY
    ->     + INTERVAL 10 HOUR
    ->     + INTERVAL 30 MINUTE;

Kết quả:

+---------------------+
| ArrivalTime         |
+---------------------+
| 2028-05-13 20:50:30 |
| 2029-07-23 21:30:00 |
| 2026-04-03 16:15:20 |
+---------------------+

Các đơn vị INTERVAL hỗ trợ

Đơn vịVí dụ
MICROSECONDINTERVAL 500 MICROSECOND
SECONDINTERVAL 30 SECOND
MINUTEINTERVAL 30 MINUTE
HOURINTERVAL 10 HOUR
DAYINTERVAL 22 DAY
WEEKINTERVAL 2 WEEK
MONTHINTERVAL 3 MONTH
QUARTERINTERVAL 1 QUARTER
YEARINTERVAL 10 YEAR
Kết hợpINTERVAL '1 12:30:05' DAY_SECOND

Lưu ý

  • Cộng INTERVAL tự động xử lý ngày tháng (ví dụ: 31/1 + 1 tháng = 28/2 hoặc 29/2 năm nhuận).
  • Với TIMESTAMP, chú ý múi giờ (timezone) – INTERVAL tính theo UTC rồi chuyển về session timezone.
  • Để trừ: dùng - INTERVAL ... hoặc DATE_SUB(cot, INTERVAL ...).
  • Hiệu năng: UPDATE hàng loạt không dùng index trên cột datetime (vì giá trị mới không liên quan giá trị cũ). Cân nhắc chia batch nếu bảng lớn.