假设我想获取从4月从1号到18号的每天:
SELECT to_char(to_date(to_char(to_date('2022-04-18', 'yyyy-mm-dd'),
'yyyymm'),
'yyyymm') + (ROWNUM - 1),
'yyyy-mm-dd') day_id
FROM dual
CONNECT BY ROWNUM <= to_number(to_char(to_date('2022-04-18', 'yyyy-mm-dd'), 'dd'));
执行效果:
如果你想获取月的1号到今天,就把上面的 '2022-04-18 '改成 TO_CHAR(SYSDATE,'YYYY-MM-DD') 即可。
运行TO_CHAR(SYSDATE,'YYYY-MM-DD')是获取当天的日期,并将结果以YYYY-MM-DD显示。
应用场景1:
select A.day_id,NVL(B.value,0) from (
SELECT to_char(to_date(to_char(to_date( '2022-04-18', 'yyyy-mm-dd' ), 'yyyymm' ), 'yyyymm' ) + ( ROWNUM - 1 ), 'yyyy-mm-dd' ) day_id
FROM dual CONNECT BY ROWNUM <= to_number( to_char( to_date( '2022-04-18', 'yyyy-mm-dd' ), 'dd' ))) A
left join (表) B on A.day_id = B.日期
最后的应用效果是:表B中有日期有的数据就显示数据,表B中没有的数据就显示0,用来绘制折线图是很可以的。