我有两个数据库表,一个 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;
用最好的解决方案/查询启发我,谢谢。
答案 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