第一种方法:
SELECT ROWNUM, 开始日期 + ROWNUM - 1 AS SHOW_TIME
FROM (SELECT * FROM DUAL CONNECT BY ROWNUM < 99999)
WHERE ROWNUM < 结束日期 - 开始日期 + 1;
例如查询本月1号到本月最后一天的所有日期:
SELECT ROWNUM, TRUNC(SYSDATE, 'mm') + ROWNUM - 1 AS SHOW_TIME
FROM (SELECT * FROM DUAL CONNECT BY ROWNUM < 99999)
WHERE ROWNUM < TRUNC(ADD_MONTHS(SYSDATE, 1), 'MM') - TRUNC(SYSDATE, 'mm') + 1;==========================================================================
第二种方法:(推荐,效率高)
SELECT ROWNUM, 开始日期 + ROWNUM - 1 AS SHOW_TIME
FROM DUAL
CONNECT BY ROWNUM < 结束日期 - 开始日期 + 1;
例如查询本月1号到本月最后一天的所有日期:
SELECT ROWNUM, TRUNC(SYSDATE, 'MM') + ROWNUM - 1 AS SHOW_TIME
FROM DUAL
CONNECT BY ROWNUM < TRUNC(ADD_MONTHS(SYSDATE, 1), 'MM') - TRUNC(SYSDATE, 'MM') + 1;例如查询2016-07-10到2016-07-16的所有日期:
SELECT ROWNUM, TRUNC(to_Date('2016-07-10','yyyy-mm-dd'), 'dd') + ROWNUM - 1 AS SHOW_TIME
FROM DUAL
CONNECT BY ROWNUM < TRUNC(to_Date('2016-07-16','yyyy-mm-dd'), 'dd') - TRUNC(to_Date('2016-07-10','yyyy-mm-dd'), 'dd') + 1;
本文介绍两种在Oracle数据库中生成指定日期范围内的所有日期的方法。第一种方法通过使用DUAL表结合ROWNUM生成序列,并加上开始日期来计算日期;第二种方法(推荐)同样利用ROWNUM但更为高效。文中提供具体SQL语句示例,包括查询本月所有日期及特定日期区间。

5719

被折叠的 条评论
为什么被折叠?



