开始日期和结束日期之间的表中的周末活动
问题描述:
我想从表中找到周末活动。表从日期到目前为止。开始日期和结束日期之间的表中的周末活动
我写了查询,如果从和日期相等。即,
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
答
如果你想显示下一个星期六和星期日(一周的第一天是星期一),你可以使用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
解释
Weekday
回报0-6代表周一至周日
因此,要获得下周日(Weekday(aSunday)=6
)只需要添加6 - weedday(curdate())
天。
要获得下周六(Weekday(aSaturday)=5
),需要考虑curdate是星期天,然后加上5 - 6
将得到昨天。所以添加7和7可以得到6,这将得到这个星期天下周六。
查询使用MySQL语法,因此我删除了SQL Server标记。 – 2014-10-29 12:05:13
这是MySQL吗?我看不到任何日期:-( – Strawberry 2014-10-29 12:11:07
“这个星期六或星期天”是什么意思?你的意思是“即将到来的即将到来的星期六和星期日”? – Strawberry 2014-10-29 12:17:33