2013-06-06 40 views
0

我想要使用MySQL來計算給定日期範圍內發生的星期日數... 我的問題是給出的日期不在表中。 。我想要的是讓SQL計算它沒有任何查詢..例如:SELECT DATEDIFF(date1,date2);這當然不需要任何表格來查詢。 這可能嗎?在給定的日期範圍內計數星期日的發生而不詢問表

+3

你爲什麼要在數據庫中做它在所有如果你沒有訪問任何數據? –

+0

因爲我正在使用一家公司製作的CGI,它利用了sql和javascript ... –

回答

0

是的,它是可能的。

假設您的date1大於date2。

所以,

first_sunday = DATE_ADD(@date2, interval (8 - DAYOFWEEK(@date2)) mod 7 DAY) 

是星期天旁邊@ DATE2,如果@ date2的是星期天,first_sunday是@ date2的

last_sunday = DATE_ADD(@date1, interval 8 - DAYOFWEEK(@date1) DAY) 

是星期天旁邊@ DATE1即使@ DATE1是週日與否,我們不會計算last_sunday

sunday_count = FLOOR(DATEDIFF(last_sunday, first_sunday)/7) 

會將您的星期日金額從date2返回到date1。

如果你想要一個只有一個查詢,這是它:

SELECT FLOOR(DATEDIFF(DATE_ADD(@date1, interval 8 - DAYOFWEEK(@date1) DAY), DATE_ADD(@date2, interval (8 - DAYOFWEEK(@date2)) mod 7 DAY))/7) 
+0

感謝這一次,對性能有很大的幫助.. –

相關問題