Выберите текущие (неделя или любая данная неделя) записи, исключая выходные и праздничные дни - PullRequest
0 голосов
/ 14 декабря 2018

У меня есть две таблицы базы данных: таблица to_do и таблица праздничных дней .Обе таблицы имеют столбец date . to_do В таблице есть столбец часов .Мне нужно получить сумму часов для текущей недели или недели для определенной даты, но исключая выходные дни и дни в таблице праздничные дни .

Вот мои таблицы SQL

CREATE TABLE `holidays` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

CREATE TABLE `to_do` (
  `id` int(50) NOT NULL AUTO_INCREMENT,
  `date` date NOT NULL,
  `hours` int(10) NOT NULL,
  PRIMARY KEY (`id`)
) ENGINE=InnoDB DEFAULT CHARSET=latin1;

просветите меня с наилучшим возможным решением / вопрос, пожалуйста.

1 Ответ

0 голосов
/ 14 декабря 2018

Для рабочих дней используйте только функцию DAYOFWEEK.Сумма и другие фильтры оставлены для вас в качестве упражнения, но суть:

SELECT * FROM to_do
WHERE DAYOFWEEK(`date`) IN (2,3,4,5,6)
AND `date` NOT IN (
  SELECT `date` FROM holidays
)

DAYOFWEEK Документация по функциям: https://dev.mysql.com/doc/refman/5.5/en/date-and-time-functions.html#function_dayofweek

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...