在层次查询中,Oracle引入了一个伪列level,用来表示当前行(节点)对应的level, 
它从1开始计数,每多一层level的值就加1。 
我们可以据此实现对两个日期/整数之间所有日期/整数的遍历。 
---------------------------------------------------------- 
SQL> create table test (begin_date date,end_date date);

Table created

SQL> insert into test values(trunc(sysdate),trunc(sysdate+5));

1 row inserted

SQL> select * from test;

BEGIN_DATE  END_DATE 
----------- ----------- 
2010-4-6    2010-4-11

SQL> select begin_date,end_date,begin_date+level -1 as today 
  2  from test 
  3  connect by begin_date + level -1 <= end_date;

BEGIN_DATE  END_DATE    TODAY 
----------- ----------- ----------- 
2010-4-6    2010-4-11   2010-4-6 
2010-4-6    2010-4-11   2010-4-7 
2010-4-6    2010-4-11   2010-4-8 
2010-4-6    2010-4-11   2010-4-9 
2010-4-6    2010-4-11   2010-4-10 
2010-4-6    2010-4-11   2010-4-11

6 rows selected

------------------------------------------------------------------插入两条记录,看该查询语句是否可行 
SQL> insert into test values(trunc(sysdate+4),trunc(sysdate+7));

1 row inserted

SQL> select * from test;

BEGIN_DATE  END_DATE 
----------- ----------- 
2010-4-6    2010-4-11 
2010-4-10   2010-4-13

SQL> select distinct begin_date+level-1 as today 
  2  from test 
  3  connect by begin_date+level-1 <= end_date;

TODAY 
----------- 
2010-4-7 
2010-4-13 
2010-4-8 
2010-4-11 
2010-4-9 
2010-4-6 
2010-4-10 
2010-4-12

8 rows selected 
--------------------------------------- 根据最大和最小值得查询 
SQL> delete from test where begin_date = to_date('2010-4-10','yyyy-mm-dd');

1 row deleted

SQL> select * from test;

BEGIN_DATE  END_DATE 
----------- ----------- 
2010-4-6    2010-4-11

SQL> SELECT one_date 
  2    FROM (SELECT start_date + level - 1 one_date 
  3            FROM (SELECT min(begin_date) start_date, max(end_date) end_date 
  4                    FROM test) test 
  5          connect BY start_date + level - 1 <= end_date ) all_date, 
  6         test 
  7   WHERE one_date BETWEEN begin_date AND end_date;

ONE_DATE 
----------- 
2010-4-6 
2010-4-7 
2010-4-8 
2010-4-9 
2010-4-10 
2010-4-11

6 rows selected

如何用SQL返回两个日期之间的所有连续日期的更多相关文章

  1. sql返回两个日期之间的日期_函数实现

    -- Description:返回两段日期之间的所有日期    <Description,,>-- ============================================ ...

  2. SQL 获得两个时间段之间的数据

    一般保存在数据库中的日期精度很高,比如'2014-04-15 16:31:22.000' 而一般用户选择的时间精度是精确到日的,比如'2012-04-15' 所以你想取出两个日期之间的数据,如果用下面 ...

  3. 日期选择时两个日期之间的动态控制--My97datepicker日期选择控件

    实现效果:如果先选离店日期,再选入住日期的话,入住日期大于离店日期则离店日期+1天否则离店日期不变,先选入店再选离店离店,离店只能选之后的日期,且两个日期之间最多间隔88天 <div class ...

  4. JS之document例题讲解1(两张表之间数据转移、日期时间选择、子菜单下拉、用div做下拉菜单、事件总结)

    作业一:两个列表之间数据从一个列表移动到另一个列表 <div style="width:600px; height:500px; margin-top:20px"> & ...

  5. SQL生成两个时间之间的所有日期

    select dateadd(dd,number,'2012-1-1') AS date from master..spt_values where type='p' and dateadd(dd,n ...

  6. sql 截取两个字符串之间的字符

    select SUBSTRING(templatepath,CHARINDEX('/',templatepath)+1,CHARINDEX('.', templatepath)-CHARINDEX(' ...

  7. sql计算两个时间之间的差,并用时分秒表示

    这是自己写的方法,总觉得会有更好的办法实现这个效果呢? SELECT then ))))+'秒' then )))+'秒' then ))+'秒' else CONVERT(nvarchar,DATE ...

  8. MySQL如何查询两个日期之间的记录

    baidu出来的结果多是下面答案:<quote> MySQL中,如何查询两个日期之间的记录,日期所在字段的类型为datetime(0000-00-00 00:00:00) 解决方案: 直接 ...

  9. Oracle常用函数:DateDiff() 返回两个日期之间的时间间隔自定义函数

    首先在oracle中没有datediff()函数可以用以下方法在oracle中实现该函数的功能:1.利用日期间的加减运算天:ROUND(TO_NUMBER(END_DATE - START_DATE) ...

随机推荐

  1. POJ 2376 Cleaning Shifts(轮班打扫)

    POJ 2376 Cleaning Shifts(轮班打扫) Time Limit: 1000MS   Memory Limit: 65536K [Description] [题目描述] Farmer ...

  2. javascript权威指南笔记--javascript语言核心(三)

    1.var用来声明一个或多个变量.全局变量是全局对象的属性,它无法通过delete删除. 如果var语句中的变量没有指定初始化表达式,那么这个变量的初始值为undefined. 变量声明语句会被提前到 ...

  3. iOS - Swift NSProcessInfo 系统进程信息

    前言 public class NSProcessInfo : NSObject 1.获取系统进程信息 // 创建系统进程信息对象 let processInfo:NSProcessInfo = NS ...

  4. RAR暴破

    1. 网上稍微搜索了一下,貌似一个叫 "ARPR"的软件 出现的频率较高. 2. http://jingyan.baidu.com/article/a948d651b954a90a ...

  5. Myeclipse优化篇

    1 . window-preferences-MyEclipse Enterprise Workbench-Maven4MyEclipse-Maven ,将 Maven JDK 改为电脑上安装的 JD ...

  6. xcode黑科技

    1多开模拟器 使用命令行: cd /Applications/Xcode1.app/Contents/Developer/Applications/&open -n Simulator.app ...

  7. 【转载】PHP运行模式的深入理解

    PHP运行模式的深入理解 作者: 字体:[增加 减小] 类型:转载 时间:2013-06-03我要评论 本篇文章是对PHP运行模式进行了详细的分析介绍,需要的朋友参考下   PHP运行模式有4钟:1) ...

  8. OpneCV 二值图像区域处理

    //--------------------------------------[程序说明]------------------------------------------- // 在图像处理中总 ...

  9. PacBio软件总览 - 初级分析

    PacBio® RS Software Overview PacBio运行的整个流程是什么?每一步都用到了什么软件? PacBio软件套件 RS Remote:Design runs remotely ...

  10. Global Alignment(全局比对)--从算法(Needleman-Wunsch)到python实现

    很早就知道有全局比对和局部比对这两种比对方法,都是用到的动态规划的思想,知道一些罚分矩阵的概念,但一直都没有机会搞透彻,一些算法的细节也不太清楚,也没有亲手编程实现. 现在由于项目需求,需要手动写一个 ...