如何使用oracle数据库查询指定时间内每一天的日期

oracle查询语句(查询在2018-02-01至2018-07-31时间段内的每一天日期)

SELECT TO_CHAR(TO_DATE('2018-02-01', 'yyyy-MM-dd') + ROWNUM - 1,'yyyy-MM-dd') as daylist
FROM DUAL
CONNECT BY ROWNUM <=
to_date('2018-07-31', 'yyyy-MM-dd') -
to_date('2018-02-01', 'yyyy-MM-dd') + 1

说明:ROWNUM是oracle的一个序号列,会根据sql语句的查询结果自动加上一个排列好顺序的序号列,rownum还可以用于分页,比如select g.* from grade g where rownum < 10 order by chinese可以查出前10条根据chinese字段排序后的记录,但是需要注意的是,如果查询语句改为select g.* from grade g where rownum > 10 order by chinese,则返回的查询结果为空,这是因为rownum总是为满足条件的记录从1开始记录序列号,当找到第一条记录记录序列号为1时,此时oracle数据库对结果进行判断,rownum为1并不满足上述条件,oracle舍弃该条记录继续往下判断,第二条rownum还是为1同样不满足条件,oracle舍弃了所有的记录,所以返回的结果为空。正确的sql语句应该这样写:

select mygrade.* from(select g.*, rownum rn from grade g order by chinese) mygrade where mygrade.rn>10;

这样就可以查出第10条语句之后的记录了。

CONNECT BY用来查询存在父子关系的数据,也就是树形结构的数据。

TO_CHAR函数是对返回的数据按照yyyy-MM-dd格式处理

阅读更多
文章标签: 数据库
下一篇IDEA常用的快捷键
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭