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ự.