Cập nhật hàng loạt TIMESTAMP: Cộng thêm giây dùng biến và INTERVAL
Sử dụng biến user-defined lưu giá trị tăng (giây), kết hợp INTERVAL @var SECOND trong UPDATE để cộng đồng thời cho nhiều hàng.
1. Tạo bảng và chèn dữ liệu
mysql> CREATE TABLE DemoTable (DueDatetime TIMESTAMP);
mysql> INSERT INTO DemoTable VALUES
('2019-01-31 12:30:40'), ('2019-09-06 10:00:00'), ('2019-09-07 11:10:24');
2. Xem dữ liệu ban đầu
mysql> SELECT * FROM DemoTable;
+-----------------------+ | DueDatetime | +-----------------------+ | 2019-01-31 12:30:40 | | 2019-09-06 10:00:00 | | 2019-09-07 11:10:24 | +-----------------------+
3. Thiết lập biến và UPDATE
mysql> SET @secondValue := 12;
mysql> UPDATE DemoTable
SET DueDatetime = DueDatetime + INTERVAL (@secondValue) SECOND;
Kết quả: Query OK, 3 rows affected
4. Kiểm tra kết quả (mỗi hàng +12 giây)
mysql> SELECT * FROM DemoTable;
+-----------------------+ | DueDatetime | +-----------------------+ | 2019-01-31 12:30:52 | | 2019-09-06 10:00:12 | | 2019-09-07 11:10:36 | +-----------------------+
Giải thích:
SET @secondValue := 12: Gán 12 giây vào biến sessionINTERVAL (@secondValue) SECOND: Tạo interval 12 giây từ biếnDueDatetime + INTERVAL ...: Cộng interval vào timestamp- Áp dụng cho TẤT CẢ 3 hàng (không có WHERE)
Các đơn vị INTERVAL hỗ trợ:
| Đơn vị | Ví dụ |
|---|---|
| SECOND | INTERVAL 30 SECOND |
| MINUTE | INTERVAL 5 MINUTE |
| HOUR | INTERVAL 2 HOUR |
| DAY | INTERVAL 1 DAY |
| MONTH | INTERVAL 3 MONTH |
| YEAR | INTERVAL 1 YEAR |
| Kết hợp | INTERVAL '1 12:30:00' DAY_SECOND |
Lưu ý: TIMESTAMP có múi giờ (timezone), DATETIME không. INTERVAL hoạt động tương tự cho cả hai.
Ứng dụng: Điều chỉnh múi giờ hàng loạt, dịch chuyển deadline, sync thời gian server.