Запросить базу данных «в течение этой недели» для даты

Я хочу использовать следующий запрос:

SELECT concat(firstname,' ', surname) AS 'Fname',
MAX(CASE WHEN DAYOFWEEK(date) = 1 THEN concat(starttime,'-', endtime) END) `Sunday`,
MAX(CASE WHEN DAYOFWEEK(date) = 2 THEN concat(starttime,'-', endtime) END) `Monday`,
MAX(CASE WHEN DAYOFWEEK(date) = 3 THEN concat(starttime,'-', endtime)  END) `Tuesday`,
MAX(CASE WHEN DAYOFWEEK(date) = 4 THEN concat(starttime,'-', endtime)  END) `Wednesday`,
MAX(CASE WHEN DAYOFWEEK(date) = 5 THEN concat(starttime,'-', endtime)  END) `Thursday`,
MAX(CASE WHEN DAYOFWEEK(date) = 6 THEN concat(starttime,'-', endtime)  END) `Friday`,
MAX(CASE WHEN DAYOFWEEK(date) = 7 THEN concat(starttime,'-', endtime)  END) `Saturday`
FROM shifts NATURAL JOIN employees
GROUP BY Fname, date

И как-то изменить его так, чтобы отображались только значения ЭТОЙ НЕДЕЛИ, примерно так:

SELECT concat(firstname,' ', surname) AS 'Fname',
MAX(CASE WHEN (DAYOFWEEK(date) = 1 AND WITHIN THIS WEEK) THEN concat(starttime,'-', endtime) END) `Sunday`,
etc... etc...

Это возможно через MySQL?

2

Решение

Вопрос в том, о какой неделе ты говоришь? Я бы использовал часть критерия where в операторе select для фильтрации по периоду, однако вам необходимо определить, какую неделю вы говорите.

  1. Используйте между … и …, если вы знаете точные даты начала и окончания недели:

    … где дата между … и …

  2. использование неделю() (или функции weekofyear ()) и year () для получения дат на одну неделю (пожалуйста, обратите внимание, что начальный день недели является настраиваемой переменной, подробности см. по ссылке для week ()):

    … где год (дата) = … и неделя (дата) = …

  3. Та же логика, что и в предыдущем, просто используйте Формат даты() чтобы получить комбинацию года и недели.

0

Другие решения

Других решений пока нет …

По вопросам рекламы ammmcru@yandex.ru
Adblock
detector