Đây là một phiên bản đơn giản chỉ sử dụng toán học ngày tháng:
SELECT LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 4) % 7);
Tùy thuộc vào cách NOW()
được đánh giá (một hoặc hai lần cho mỗi câu lệnh), bạn có thể vẫn muốn gói điều này trong một hàm và lưu trữ kết quả của NOW()
vào một biến, sau đó sử dụng biến cho LAST_DAY(var)
cuộc gọi, để tránh tình trạng chạy đua trong đó tháng luân chuyển giữa các cuộc gọi đến NOW()
.