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

Lấy ngày hôm qua trong MySQL với SUBDATE()

Tính ngày hôm qua (yesterday) từ cột DATETIME

Dùng hàm SUBDATE(date, INTERVAL 1 DAY) hoặc DATE_SUB(date, INTERVAL 1 DAY) (tương đương).

Cú pháp

SELECT SUBDATE(cotThoiGian, INTERVAL 1 DAY) AS NgayHomQua
FROM tenBang;

Ví dụ minh họa

Bảng YesterdayDateDemo:

CREATE TABLE YesterdayDateDemo (VisitedDateTime DATETIME);
INSERT INTO YesterdayDateDemo VALUES
(NOW()), ('2012-12-26 13:24:35'), ('2013-10-22 12:20:32');

Giả sử NOW() = '2018-12-18 14:22:48'.

Truy vấn:

SELECT SUBDATE(VisitedDateTime, INTERVAL 1 DAY) AS YesterdayDate
FROM YesterdayDateDemo;

Kết quả

+---------------------+
| YesterdayDate       |
+---------------------+
| 2018-12-17 14:22:48 |
| 2012-12-25 13:24:35 |
| 2013-10-21 12:20:32 |
+---------------------+

(Ví dụ gốc chỉ hiển thị 1 dòng do bản ghi NOW() là hôm nay, 2 bản ghi cũ không được lọc - đây là hành vi bình thường của SELECT không WHERE).

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

  • SUBDATE(cot, 1): Mặc định trừ 1 ngày (ngắn gọn).
  • DATE_SUB(cot, INTERVAL 1 DAY): Cú pháp chuẩn SQL.
  • DATE(cot) - INTERVAL 1 DAY: MySQL cho phép phép trừ trên DATE.
  • SUBDATE(cot, INTERVAL 1 MONTH), YEAR, HOUR, MINUTE...

Lọc bản ghi "hôm qua" (so với hôm nay)

SELECT * FROM bang
WHERE DATE(cotThoiGian) = SUBDATE(CURDATE(), 1);

Hoặc tối ưu index:

WHERE cotThoiGian >= SUBDATE(CURDATE(), 1)
  AND cotThoiGian < CURDATE()