获取一段时间内的所有日期

本为是我的同事陈为的作品:

 

该功能可用于统计报表中要求做按日、按月、按季的统计:

1、执行以下SQL语句:

select distinct(to_char(dt,'yyyy-MM-dd')) tjrq from ( select to_date('2008-05-01', 'yyyy-MM-dd')+rownum-1 dt from dual connect by rownum<=to_date('2008-09-20', 'yyyy-MM-dd')-to_date('2008-05-01', 'yyyy-MM-dd') + 1) 

 

该语句可获取2008-05-012008-09-20段内的所有日期;

 

2、将以上语句中的distinct(to_char(dt,'yyyy-MM-dd'))分别改为distinct(to_char(dt,'yyyy-MM'))以及distinct(to_char(dt,'yyyy-q'))则可显示该段日期内的所有月份以及所有季度;

 

3、以上功能无法实现对周的处理,需另行处理。

 

知识点解析:

1distinctdistinct这个关键字来过滤掉多余的重复记录只保留一条,但往往只用它来返回不重复记录的条数,而不是用它来返回不重记录的所有值。(注:distinct必须放在开头)

 

2connect by:递归查询语句,对于树非常有用。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值