问我想利用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(@dayinterval*tensi+unitsiday)asadatefromintegersastenscrossjoinintegersasunitswheredate_add(@dayinterval*tensi+unitsiday)<date_add(@dayintervalmonth)orderbyadate
你会发现这里有一个ORDER BY子句所以你可以充分相信该查询正确生成了这个月所有的日期现在只需要将函数相加确定一个周六并且计算的日期现在只需要将函数相加确定一个周六并进行计算
set@day=’’;selectcount(casewhendayofweek(date_add(@dayinterval*tensi+unitsiday))=thenelsenullend)assundaysfromintegersastenscrossjoinintegersasunitswheredate_add(@dayinterval*tensi+unitsiday)<date_add(@dayintervalmonth)Result:sundays
非常简单不是吗?