数据库

位置:IT落伍者 >> 数据库 >> 浏览文章

利用SQL找出一个月中有多少个周日


发布日期:2018年11月30日
 
利用SQL找出一个月中有多少个周日

我想利用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

非常简单不是吗?

上一篇:sql存储过程分页算法研究

下一篇:用mysqldumpslow分析mysql的slow query log