Aquí hay una versión simplificada que usa solo matemáticas de fecha:
SELECT LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 4) % 7);
Dependiendo de cómo NOW()
se evalúa (una o dos veces por declaración), es posible que desee envolver esto en una función y almacenar el resultado de NOW()
en una variable y luego use la variable para el LAST_DAY(var)
llamada, para evitar una condición de carrera en la que el mes se acumula entre las llamadas a NOW()
.