开始日期和结束日期之间的表中的周末活动

开始日期和结束日期之间的表中的周末活动

问题描述:

我想从表中找到周末活动。表从日期到目前为止。开始日期和结束日期之间的表中的周末活动

我写了查询,如果从和日期相等。即,

SELECT * 
from table 
where date_from < DATE_ADD(CURDATE(), INTERVAL 7 DAY) and 
     (DAYOFWEEK(date_from) = 7 or DAYOFWEEK(date_from) = 1) 

会是怎样的查询,在开始之间的日期和结束日期发生这种周六或周日?

如:

Start Date End Date Show/Don't Show 
29-10-2014 30-10-2014 Don't Show 
29-10-2014 03-11-2014 Show 
03-11-2014 03-12-2014 Don't Show 
29-10-2014 03-12-2014 Show 
01-11-2014 01-11-2014 Show 
+2

查询使用MySQL语法,因此我删除了SQL Server标记。 – 2014-10-29 12:05:13

+0

这是MySQL吗?我看不到任何日期:-( – Strawberry 2014-10-29 12:11:07

+0

“这个星期六或星期天”是什么意思?你的意思是“即将到来的即将到来的星期六和星期日”? – Strawberry 2014-10-29 12:17:33

如果你想显示下一个星期六和星期日(一周的第一天是星期一),你可以使用5 - Weekday(curdate())的DIFF天来计算,到下周六,和6 - Weekday(curdate())下周日。

所以:

SELECT * 
from 
    my_table 
where 
    DATE_ADD(CURDATE(), INTERVAL (7+5 - weekday(curdate()))%7 DAY) between date_from and date_to 
or 
    DATE_ADD(CURDATE(), INTERVAL 6 - weekday(curdate()) DAY) between date_from and date_to 

DEMO

解释

Weekday回报0-6代表周一至周日

因此,要获得下周日(Weekday(aSunday)=6)只需要添加6 - weedday(curdate())天。

要获得下周六(Weekday(aSaturday)=5),需要考虑curdate是星期天,然后加上5 - 6将得到昨天。所以添加7和7可以得到6,这将得到这个星期天下周六。