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

Trừ ngày (giảm 1 ngày) trong MySQL với DATE_SUB()

Hàm DATE_SUB() cho phép trừ một khoảng thời gian (ngày, tháng, năm, giờ...) từ một giá trị ngày/giờ. Đây là cách chuẩn để thực hiện phép toán ngày tháng trong MySQL.

Cú pháp

DATE_SUB(ngay_gio, INTERVAL gia_tri DON_VI)

Các đơn vị phổ biến: DAY, WEEK, MONTH, YEAR, HOUR, MINUTE, SECOND.

Ví dụ minh họa

Tạo bảng và chèn ngày:

CREATE TABLE DemoTable (AdmissionDate TIMESTAMP);
INSERT INTO DemoTable VALUES 
('2019-01-01'), ('2018-12-31'), ('2017-03-13'), ('2019-01-02');

Trừ 1 ngày từ mỗi bản ghi:

SELECT DATE_SUB(AdmissionDate, INTERVAL 1 DAY) AS NgayTruoc
FROM DemoTable;

Kết quả

AdmissionDate (gốc)NgayTruoc (trừ 1 ngày)
2019-01-01 00:00:002018-12-31 00:00:00
2018-12-31 00:00:002018-12-30 00:00:00
2017-03-13 00:00:002017-03-12 00:00:00
2019-01-02 00:00:002019-01-01 00:00:00

Các biến thể hữu ích

  • Trừ 7 ngày: INTERVAL 7 DAY hoặc INTERVAL 1 WEEK
  • Trừ 1 tháng: INTERVAL 1 MONTH
  • Trừ 1 năm: INTERVAL 1 YEAR
  • Cộng ngày (dùng DATE_ADD): DATE_ADD(ngay, INTERVAL 1 DAY)
  • Cách viết tắt (chỉ MySQL): ngay - INTERVAL 1 DAY

Lưu ý: DATE_SUB tự động xử lý chuyển tháng, năm nhuận, v.v. Kết quả giữ nguyên kiểu dữ liệu đầu vào (DATE, DATETIME, TIMESTAMP).