Sử dụng kết hợp DATE_ADD(), LAST_DAY(), DATE_SUB() và DAY() để tính ngày đầu và cuối tháng sau.
Cú pháp:
SELECT
DATE_SUB(
LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)),
INTERVAL DAY(LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH))) - 1 DAY
) AS firstDayOfNextMonth,
LAST_DAY(DATE_ADD(NOW(), INTERVAL 1 MONTH)) AS lastDayOfNextMonth;
Giải thích:
DATE_ADD(NOW(), INTERVAL 1 MONTH): ngày hiện tại + 1 thángLAST_DAY(...): ngày cuối của tháng đóDAY(LAST_DAY(...)) - 1: số ngày của tháng trừ 1DATE_SUB(LAST_DAY(...), INTERVAL ... DAY): trừ đi để về ngày 1
Ví dụ (giả sử hôm nay 2019-01-15):
mysql> SELECT ... ;
+---------------------+--------------------+ | firstDayOfNextMonth | lastDayOfNextMonth | +---------------------+--------------------+ | 2019-02-01 | 2019-02-28 | +---------------------+--------------------+
Cách đơn giản hơn (MySQL 8.0+): dùng DATE_FORMAT hoặc logic ứng dụng. Truy vấn trên tương thích mọi phiên bản.