oracle日期每一天,oracle 返回两个日期之间的每一天的列表,SQL文怎么写

可以写一个简单的procedure来实现,原理是遍历日期范围,并查询日期资料笔数,写入表。数据源表test031 2016-06-01 12 2016-06-02 13 2016-06-05 14 2016-06-04 15 2016-06-04 1procedure代码如下:create or replace procedure loop_by_date(pbeg_tim in varchar2,--开始日期 pend_tim in varchar2,--结束日期 errmessage out varchar2) is nCount number(10); --总天数 i_point number(10); --当天 is_zero number(10); --当天是否有记录begin nCount := 0; i_point := 0; is_zero := 0; select ROUND(to_date(pend_tim, 'yyyy-mm-dd') - to_date(pbeg_tim, 'yyyy-mm-dd')) into nCount from dual; delete from test02; <> loop select count(*) into is_zero from test03 where date1 = to_char(to_date(pbeg_tim, 'yyyy-mm-dd') + i_point, 'yyyy-mm-dd'); insert into test02 (date01, nccount) values (to_char(to_date(pbeg_tim, 'yyyy-mm-dd') + i_point, 'yyyy-mm-dd'), is_zero); i_point := i_point + 1; exit fst_loop when i_point >= nCount; end loop fst_loop; --end;end loop_by_date;传入参数"2016-06-01"~~"2016-06-10"并执行,结果写入test02为:1 2016-06-01 12 2016-06-02 13 2016-06-03 04 2016-06-04 25 2016-06-05 16 2016-06-06 07 2016-06-07 08 2016-06-08 09 2016-06-09 0,还有这么到的???2015-09-01到2014-09-12 select date,count(*) as number from table_name where date = '2015-09-01'unionselect date,count(*) as number from table_name where date = '2015-09-02' 如果天数比较少 可以这么干,如果比较多可以写存储过程,循环搞本回答被网友采纳,因为有"如果有一天没有记录记为0"这个要求,故需要实现一个函数:该函数返回起始与终止日期之间的所有日期记录,用table查询此函数返回的记录,并做统计www.shufadashi.com防采集。

SELECTTO_CHAR(TO_DATE('2015/12/12','YYYY/MM/DD')+ROWNUM-1,'YYYY/MM/DD')FROMDUALCONNECTBYROWNUM<=(TO_DATE('2017/12/12','YYYY/MM/DD')-TO_DATE('2015/12/12','YYYY/MM/DD'))这样...SELECT TO_CHAR(TO_DATE('2015/12/12', 'YYYY/MM/DD') + ROWNUM - 1, 'YYYY/MM/DD') FROM DUALCONNECT BY ROWNUM <= (TO_DATE('2017/12/12', 'YYYY/MM/DD') - TO_DATE('2015/12/12', 'YYYY/MM/DD'))这样就可以了展开。

1、创建测试表, create table test_date(id int, v_date date); 2、插入测试数据 insert into test_date values (1, STR_TO_DATE('2016-01-02', '%Y-%m-%d')); insert into test_date values (2, STR_TO_DATE('2019-01-02', '%Y-%m-%d')); inse

993a138315c35d8a96e84f62b32de0f3.png

SELECT TO_CHAR(TO_DATE('2015/12/12', 'YYYY/MM/DD') + ROWNUM - 1,               'YYYY/MM/DD')  FROM DUALCONNECT BY ROWNUM <= (TO_DATE('2017/12/12', 'YYYY/MM/DD') -           TO_DATE('2015/12/12', 'YYYY/MM/DD'))

http://accessoft.com/blog/article-show.asp?userid=20576&Id=8117 这个是日期生成代码

0bf56cf0a614c44366a610c4dcd024f7.png

你写的没错啊

问题不是很清楚,按照你说的,可以先把日期字段 to_char,获取到小时,然后用where子句查询 最后,把日期字段再 to_char(日期,‘YYYY-MM-DD’) 进行GROUP BY 汇总,则可以得到你要的结果,当然 如果你的要求是 日期当列名的话,还需要行转列 问

6cafca3e85891a68d5f05c26e5bbe32a.gif

内容来自www.shufadashi.com请勿采集。

本篇内容仅供参考,内容整理自:百度知道,若有侵权及违法信息,请联系513175919@qq.com,核实后我们将给予一定现金奖励

声明:本网内容收集自互联网,旨在传播知识仅供参考,不代表本网赞同其观点,文字及图片版权归原网站所有。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值