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

Thêm 2 tuần vào ngày trong MySQL?

Giải pháp: DATE_ADD() với INTERVAL

Hàm DATE_ADD(date, INTERVAL expr unit) cộng interval vào ngày.

Ví dụ minh họa

Tạo bảng

mysql> CREATE TABLE DemoTable (
    Id INT NOT NULL AUTO_INCREMENT PRIMARY KEY,
    ShippingDate DATETIME
);

Giả sử NOW() = '2019-06-02 10:36:49'

Chèn ngày + 2 tuần

mysql> INSERT INTO DemoTable(ShippingDate) 
    -> VALUES(DATE_ADD(NOW(), INTERVAL 2 WEEK));

Kết quả

+----+-----------------------+
| Id | ShippingDate          |
+----+-----------------------+
| 1  | 2019-06-16 10:37:24   |
+----+-----------------------+

Các đơn vị INTERVAL

UnitVí dụKết quả
MICROSECONDINTERVAL 500 MICROSECOND+0.0005s
SECONDINTERVAL 30 SECOND+30s
MINUTEINTERVAL 15 MINUTE+15p
HOURINTERVAL 2 HOUR+2h
DAYINTERVAL 10 DAY+10 ngày
WEEKINTERVAL 2 WEEK+14 ngày
MONTHINTERVAL 1 MONTH+1 tháng
QUARTERINTERVAL 1 QUARTER+3 tháng
YEARINTERVAL 1 YEAR+1 năm
DAY_HOURINTERVAL '1 12' DAY_HOUR1 ngày 12h
YEAR_MONTHINTERVAL '1-6' YEAR_MONTH1 năm 6 tháng

Cú pháp thay thế

-- Toán tử + (MySQL extension)
SELECT NOW() + INTERVAL 2 WEEK;

-- DATE_SUB (trừ)
SELECT DATE_SUB(NOW(), INTERVAL 2 WEEK);  -- 2 tuần trước

-- DATE_FORMAT cho output
SELECT DATE_FORMAT(DATE_ADD(NOW(), INTERVAL 2 WEEK), '%Y-%m-%d');

Ứng dụng: Tính hạn chót, lịch hẹn

-- Hạn thanh toán 14 ngày từ ngày đặt hàng
SELECT order_id, 
       order_date,
       DATE_ADD(order_date, INTERVAL 14 DAY) AS due_date
FROM orders;

-- Lịch khám tái khám 2 tuần
UPDATE appointments 
SET followup_date = DATE_ADD(appointment_date, INTERVAL 2 WEEK)
WHERE type = 'checkup';

Lưu ý

  • DATE_ADD trả về cùng kiểu với input (DATE → DATE, DATETIME → DATETIME)
  • Tháng: INTERVAL 1 MONTH từ 31/01 → 28/02 (hoặc 29/02), không phải 30 ngày
  • DST (Daylight Saving Time): TIMESTAMP tự điều chỉnh, DATETIME không