我正在使用以下查询从数据库中提取记录:

SELECT dateAdded, claimedDate, TIMESTAMPDIFF(SECOND, dateAdded, claimedDate) AS output FROM leads
WHERE HOUR(dateAdded) >= '9'
AND HOUR(dateAdded) < '18'
AND DAYOFWEEK(dateAdded) != 7
AND DAYOFWEEK(dateAdded) != 1


就目前而言,我目前仅选择时间戳为星期一至星期五9:00 am-5:00 pm的记录。我还需要能够排除以下主要节日:元旦,阵亡将士纪念日,独立日,劳动节,感恩节和圣诞节。

我需要所有时间都排除在外的那些假期。例如,查询应排除在11月的第四个星期四(感恩节)发生的所有记录,而不考虑年份。

这不一定需要仅MySQL的解决方案。如果做混合PHP / MySQL解决方案比较容易,那么效果也很好。谢谢您的帮助。

最佳答案

您需要一个满足“假日”条件的日期表,然后JOIN进入该表。

Here's an example

否则,您只需将它们排除在外...

... WHERE dateAdded NOT IN ('2012-07-04', ...)


更新资料

This solution使用JOIN省略假期。

10-08 06:02