Để trừ một khoảng thời gian (như 1 giờ) từ thời gian hiện tại và cập nhật vào cột DATETIME, MySQL cung cấp hàm DATE_SUB() kết hợp với NOW().
Ví dụ minh họa
Tạo bảng:
mysql> CREATE TABLE DemoTable1434 (
ArrivalDatetime DATETIME
);
Chèn dữ liệu mẫu:
mysql> INSERT INTO DemoTable1434 VALUES ('2019-09-30 21:10:00');
mysql> INSERT INTO DemoTable1434 VALUES ('2018-09-30 22:20:40');
mysql> INSERT INTO DemoTable1434 VALUES ('2017-09-30 23:10:00');
Dữ liệu ban đầu:
mysql> SELECT * FROM DemoTable1434;
+---------------------+ | ArrivalDatetime | +---------------------+ | 2019-09-30 21:10:00 | | 2018-09-30 22:20:40 | | 2017-09-30 23:10:00 | +---------------------+
Cập nhật tất cả hàng: trừ 1 giờ từ thời điểm hiện tại
mysql> UPDATE DemoTable1434
SET ArrivalDatetime = DATE_SUB(NOW(), INTERVAL 1 HOUR);
Kiểm tra thời gian hiện tại:
mysql> SELECT NOW();
+---------------------+ | now() | +---------------------+ | 2019-09-30 21:16:48 | +---------------------+
Kết quả sau cập nhật (tất cả hàng trở thành 20:16:39):
mysql> SELECT * FROM DemoTable1434;
+---------------------+ | ArrivalDatetime | +---------------------+ | 2019-09-30 20:16:39 | | 2019-09-30 20:16:39 | | 2019-09-30 20:16:39 | +---------------------+
Các biến thể hữu ích
| Cú pháp | Mô tả |
|---|---|
DATE_SUB(NOW(), INTERVAL 30 MINUTE) | Trừ 30 phút |
DATE_SUB(NOW(), INTERVAL 2 DAY) | Trừ 2 ngày |
DATE_SUB(NOW(), INTERVAL 1 MONTH) | Trừ 1 tháng |
DATE_ADD(NOW(), INTERVAL 1 HOUR) | Cộng 1 giờ (dùng DATE_ADD) |
Lưu ý: Câu lệnh này cập nhật tất cả hàng trong bảng thành cùng một giá trị. Nếu cần cập nhật từng hàng dựa trên giá trị gốc của nó, hãy dùng: SET ArrivalDatetime = DATE_SUB(ArrivalDatetime, INTERVAL 1 HOUR).