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

Hiển thị ngày Chủ Nhật tới cho từng bản ghi ngày trong MySQL

Sử dụng hàm WEEKDAY() (thứ 2=0 ... Chủ nhật=6) kết hợp INTERVAL để tính ngày Chủ Nhật sắp tới.

Tạo bảng và dữ liệu

mysql> CREATE TABLE DemoTable(GetSundayDate DATE); 
Query OK, 0 rows affected (0.44 sec)

mysql> INSERT INTO DemoTable VALUES('2019-08-07'), ('2018-09-05'), ('2019-09-12'); 
Query OK, 3 rows affected

Truy vấn tính Chủ Nhật tới

mysql> SELECT DATE(GetSundayDate + INTERVAL 6 - WEEKDAY(GetSundayDate) DAY) 
AS ComingSundayDate FROM DemoTable;

Kết quả:

+------------------+
| ComingSundayDate |
+------------------+
| 2019-08-11       |
| 2018-09-09       |
| 2019-09-15       |
+------------------+

Giải thích công thức:

  • WEEKDAY(date) trả về 0 (Thứ 2) đến 6 (Chủ nhật)
  • 6 - WEEKDAY(...) cho số ngày cần cộng để đến Chủ nhật
  • Nếu ngày đó đã là Chủ nhật (WEEKDAY=6), công thức cộng 0 ngày → giữ nguyên

Cách thay thế: DATE_ADD(date, INTERVAL (7 - WEEKDAY(date)) % 7 DAY) cũng cho kết quả tương tự.