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

Lấy ngày đầu và cuối tháng sau trong MySQL

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áng
  • LAST_DAY(...): ngày cuối của tháng đó
  • DAY(LAST_DAY(...)) - 1: số ngày của tháng trừ 1
  • DATE_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.