Вы находитесь на правильном пути, избегая таких функций, как week()
в столбце - это просто сбивает оптимизатор с толку. С другой стороны, параметр uid
должен передаваться как параметр , а не изменять строку запроса.
Вы хотите использовать функцию weekday()
, потому что хотите, чтобы недели начинались в понедельник. Просто некоторая архаичность MySQL: weekday()
возвращает 0
для понедельника, тогда как dayofweek()
возвращает 2
для понедельника.
Итак, logi c для текущей недели будет:
date >= curdate() - interval weekday(curdate()) day and
date < curdate() + interval 7 - weekday(curdate()) day
Для прошлой недели это будет:
date >= curdate() - interval 7 + weekday(curdate()) day and
date < curdate() + interval - weekday(curdate()) day
Обратите внимание, что curdate()
(или current_date
) возвращает текущую дату без компонента времени, поэтому date()
не требуется.