`
angkorpeach
  • 浏览: 119882 次
  • 性别: Icon_minigender_1
  • 来自: 杭州
社区版块
存档分类
最新评论

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

SQL 
阅读更多

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

 

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

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递归查询语句,对于树非常有用。

分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics