2014-10-29 117 views
0

我想從表中找到週末活動。表從日期到目前爲止。開始日期和結束日期之間的表中的週末活動

我寫了查詢,如果從和日期相等。即,

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

回答

0

如果你想顯示下一個星期六和星期日(一週的第一天是星期一),你可以使用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,這將得到這個星期天下週六。

相關問題