問我想利用SQL找出在任意一月中的周日的數量請幫幫我
答以下是一個簡單的技巧
確定一個具體的月份確定這個月的第一天
使用INTEGERS表生成一系列這個月第一天之後的日期覆蓋這個月所有的日期
用日期函數確定這一生成日期是否就是周日
用count()獲取周日的測試結果
為了創建integers表用到下列命令
createtableintegers
(iintegernotnullprimarykey);
insertintointegers(i)values();
insertintointegers(i)values();
insertintointegers(i)values();
insertintointegers(i)values();
insertintointegers(i)values();
insertintointegers(i)values();
insertintointegers(i)values();
insertintointegers(i)values();
insertintointegers(i)values();
insertintointegers(i)values();
現在我們假設你要測試的是年月份所以你確定的日期就是然後用下面的查詢生成這個月所有的日期注意每個數據庫系統都會有不同的日期函數所以一定要知道怎麼使用你的數據庫系統這個例子就用到了MySQL語法
set@day=’’;
selectdate_add(@day
interval*tensi+unitsiday)
asadate
fromintegersastens
cross
joinintegersasunits
wheredate_add(@day
interval*tensi+unitsiday)
<date_add(@day
intervalmonth)
order
byadate
你會發現這裡有一個ORDER BY子句所以你可以充分相信該查詢正確生成了這個月所有的日期現在只需要將函數相加確定一個周六並且計算的日期現在只需要將函數相加確定一個周六並進行計算
set@day=’’;
selectcount(
casewhendayofweek(
date_add(@day
interval*tensi+unitsiday)
)=
thenelsenullend) assundays
fromintegersastens
cross
joinintegersasunits
wheredate_add(@day
interval*tensi+unitsiday)
<date_add(@day
intervalmonth)
Result:
sundays
非常簡單不是嗎?
From:http://tw.wingwit.com/Article/program/SQL/201405/30844.html