Här är en förenklad version som använder just date math:
SELECT LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 4) % 7);
Beroende på hur NOW()
utvärderas (en eller två gånger per påstående), kanske du vill linda in detta i en funktion och lagra resultatet av NOW()
till en variabel och använd sedan variabeln för LAST_DAY(var)
anrop, för att undvika ett tävlingstillstånd där månaden rullar över mellan anrop till NOW()
.