问:我想利用SQL找出在任意一月中的周日的数量。请帮帮我。 答:以下是一个简单的技巧: 确定一个具体的月份,确定这个月的第一天 使用INTEGERS表生成一系列这个月第一天之后的日期覆盖这个月所有的日期 用日期函数确定这一生成日期是否就是周日 用count()获取周日的测试结果 为了创建integers表,用到下列命令: create table integers ( i integer not null prima……
我们一直都在努力坚持原创.......请不要一声不吭,就悄悄拿走。
我原创,你原创,我们的内容世界才会更加精彩!
【所有原创内容版权均属TechTarget,欢迎大家转发分享。但未经授权,严禁任何媒体(平面媒体、网络媒体、自媒体等)以及微信公众号复制、转载、摘编或以其他方式进行使用。】
微信公众号
![TechTarget微信公众号二维码](/wp-content/uploads/res/images/spriteimg/ttweixin.jpg)
TechTarget
官方微博
![TechTarget中国官方微博二维码](/wp-content/uploads/res/images/spriteimg/ttweibo.jpg)
TechTarget中国
问:我想利用SQL找出在任意一月中的周日的数量。请帮帮我。
答:以下是一个简单的技巧:
确定一个具体的月份,确定这个月的第一天
使用INTEGERS表生成一系列这个月第一天之后的日期覆盖这个月所有的日期
用日期函数确定这一生成日期是否就是周日
用count()获取周日的测试结果
为了创建integers表,用到下列命令:
create table integers ( i integer not null primary key ); insert into integers (i) values (0); insert into integers (i) values (1); insert into integers (i) values (2); insert into integers (i) values (3); insert into integers (i) values (4); insert into integers (i) values (5); insert into integers (i) values (6); insert into integers (i) values (7); insert into integers (i) values (8); insert into integers (i) values (9); |
现在我们假设你要测试的是2006年9月份,所以你确定的日期就是2006-09-01,然后用下面的查询生成这个月所有的日期。注意:每个数据库系统都会有不同的日期函数,所以一定要知道怎么使用你的数据库系统。这个例子就用到了MySQL语法。
set @day1 = ’2006-09-01’; select date_add(@day1 , interval 10*tens.i + units.i day ) as adate from integers as tens cross join integers as units where date_add(@day1 , interval 10*tens.i + units.i day ) < date_add(@day1 , interval 1 month ) order by adate |
你会发现这里有一个ORDER BY子句,所以你可以充分相信该查询正确生成了这个月所有的日期。现在只需要将函数相加确定一个周六,并且计算的日期。现在只需要将函数相加确定一个周六,并进行计算:
set @day1 = ’2006-09-01’; select count( case when dayofweek( date_add(@day1 , interval 10*tens.i + units.i day ) ) = 1 then 1 else null end ) as sundays from integers as tens cross join integers as units where date_add(@day1 , interval 10*tens.i + units.i day ) < date_add(@day1 , interval 1 month ) Result: sundays 4 |
非常简单,不是吗?
翻译
相关推荐
-
在SQL中使用SELECT进行算术运算
如何在不使用SQL算术运算符而仅仅使用SELECT的情况下完成数学运算,Oracle数据库专家给出了解答。
-
分析并行SQL中的各个元素
并行度(DOP)定义了将被创建的执行并行流的数量。最简单的情况,它可以理解为分配为支持你SQL执行的并行伺服进程的数量。
-
在Oracle里提高SQL执行效率的三种方法
Oracle提供了多种方法用于减少花在剖析Oracle SQL表达式上的时间,在执行带有大量执行计划的复杂查询时剖析过程会拖累系统的性能。
-
使用Oracle SQL Developer和其他开发工具
本技术专题主要为使用Oracle SQL Developer和其他开发工具。包括如何使用Oracle SQL Developer和其他开发工具、使用Oracle Database Home Page、在Oracle中使用SQL*Plus等方面。