Oto uproszczona wersja wykorzystująca tylko matematykę dat:
SELECT LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 4) % 7);
W zależności od sposobu NOW()
zostanie oceniony (raz lub dwa razy na instrukcję), możesz nadal chcieć umieścić to w funkcji i przechowywać wynik NOW()
do zmiennej, a następnie użyj zmiennej dla LAST_DAY(var)
zadzwonić, aby uniknąć sytuacji wyścigu, w której miesiąc przechodzi między wywołaniami NOW()
.