Php 选择当前(周或任何给定周)记录,不包括周末和节假日

Php 选择当前(周或任何给定周)记录,不包括周末和节假日,php,sql,date,mysqli,Php,Sql,Date,Mysqli,我有两个数据库表ato_do表和一个holidays表。 两个表都有一个日期列。 待办事项表中有小时数列。 我需要获取当前一周或给定日期的一周的小时总数,但不包括周末和假日表中的天数 这是我的表SQL CREATE TABLE `holidays` ( `id` int(50) NOT NULL AUTO_INCREMENT, `date` date NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1

我有两个数据库表ato_do表和一个holidays表。 两个表都有一个日期列。 待办事项表中有小时数列。 我需要获取当前一周或给定日期的一周的小时总数,但不包括周末和假日表中的天数

这是我的表
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;

请告诉我最佳解决方案/查询,谢谢。

对于工作日,仅使用
DAYOFWEEK
功能。“总和”和“更多”筛选器留给您作为练习,但要点是:

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

DAYOFWEEK
函数文档:

旁注:为什么一个表中的
date
与另一个表中的
int
相同?有什么特别的原因吗?那是错的对不起。现在更正了。见下面的答案;看起来很有希望。谢谢@CodyCaughlan