Sử dụng kết hợp DAY() và LAST_DAY() để lấy số ngày của tháng chứa một ngày cho trước.
Cú pháp:
SELECT DAY(LAST_DAY(ten_cot)) AS ten_bien FROM ten_bang;
Ví dụ: tạo bảng DaysInaGivenMonth:
mysql> CREATE TABLE DaysInaGivenMonth (
-> MonthName DATETIME
-> );
Chèn 6 tháng liên tiếp (tính từ hiện tại lùi lại):
mysql> INSERT INTO DaysInaGivenMonth VALUES (NOW()); mysql> INSERT INTO DaysInaGivenMonth VALUES (DATE_ADD(NOW(), INTERVAL -1 MONTH)); mysql> INSERT INTO DaysInaGivenMonth VALUES (DATE_ADD(NOW(), INTERVAL -2 MONTH)); mysql> INSERT INTO DaysInaGivenMonth VALUES (DATE_ADD(NOW(), INTERVAL -3 MONTH)); mysql> INSERT INTO DaysInaGivenMonth VALUES (DATE_ADD(NOW(), INTERVAL -4 MONTH)); mysql> INSERT INTO DaysInaGivenMonth VALUES (DATE_ADD(NOW(), INTERVAL -5 MONTH));
Dữ liệu gốc:
mysql> SELECT * FROM DaysInaGivenMonth;
+---------------------+ | MonthName | +---------------------+ | 2019-01-01 21:34:26 | | 2018-12-01 21:34:55 | | 2018-11-01 21:35:14 | | 2018-10-01 21:35:20 | | 2018-09-01 21:35:23 | | 2018-08-01 21:35:27 | +---------------------+
Tính số ngày mỗi tháng:
mysql> SELECT DAY(LAST_DAY(MonthName)) AS DaysInMonth FROM DaysInaGivenMonth;
Kết quả:
+-------------+ | DaysInMonth | +-------------+ | 31 | | 31 | | 30 | | 31 | | 30 | | 31 | +-------------+
LAST_DAY() trả về ngày cuối tháng, DAY() lấy phần ngày (1-31). Kết hợp cho ra số ngày của tháng.