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

时间:2018-12-13 21:03:41

标签: php sql date mysqli

我有两个数据库表,一个 to_do 表和一个假期表。 两个表都有一个日期列。 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 :(得分:2)

在工作日仅使用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