Ето опростена версия, използваща само математика за дати:
SELECT LAST_DAY(NOW()) - ((7 + WEEKDAY(LAST_DAY(NOW())) - 4) % 7);
В зависимост от това как NOW()
се оценява (веднъж или два пъти на изявление), може да искате да увиете това във функция и да съхраните резултата от NOW()
в променлива и след това използвайте променливата за LAST_DAY(var)
обаждане, за да избегнете състояние на състезание, при което месецът се преобръща между извикванията на NOW()
.