免费注册 查看新帖 |

Chinaunix

  平台 论坛 博客 文库
最近访问板块 发新帖
查看: 12989 | 回复: 8
打印 上一主题 下一主题

[数据库] 如何把日期作for循环的条件 [复制链接]

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-20 06:20:00
跳转到指定楼层
1 [收藏(0)] [报告]
发表于 2012-09-14 01:08 |只看该作者 |倒序浏览
有变量 ls_date date;
变量取值范围是2012-1-1到2012-12-31
如何把ls_date作for循环的条件,其格式如下:for ls_date in to_date('2012-1-1','yyyy-mm-dd')..to_date('2012-12-31','yyyy-mm-dd')
但这样写总是会提示类型不正确之类,需要如何写,请大家指教。

论坛徽章:
15
CU大牛徽章
日期:2013-03-13 15:32:35白羊座
日期:2013-10-30 13:11:16未羊
日期:2013-11-29 10:47:02白羊座
日期:2014-01-22 11:34:25白羊座
日期:2014-03-04 11:05:50申猴
日期:2014-07-29 16:31:36天秤座
日期:2013-10-23 15:33:47未羊
日期:2013-10-09 09:18:53CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55未羊
日期:2013-09-23 09:29:22
2 [报告]
发表于 2012-09-14 11:22 |只看该作者
回复 1# congfu


shell下有to_date函数吗?   

论坛徽章:
15
CU大牛徽章
日期:2013-03-13 15:32:35白羊座
日期:2013-10-30 13:11:16未羊
日期:2013-11-29 10:47:02白羊座
日期:2014-01-22 11:34:25白羊座
日期:2014-03-04 11:05:50申猴
日期:2014-07-29 16:31:36天秤座
日期:2013-10-23 15:33:47未羊
日期:2013-10-09 09:18:53CU大牛徽章
日期:2013-03-13 15:38:15CU大牛徽章
日期:2013-03-13 15:38:52CU大牛徽章
日期:2013-03-14 14:08:55未羊
日期:2013-09-23 09:29:22
3 [报告]
发表于 2012-09-14 11:26 |只看该作者
for i in {1..31}; do echo 2012-1-$i; done

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-20 06:20:00
4 [报告]
发表于 2012-09-25 08:52 |只看该作者
大哥,我是在windows下操作的oracle,

论坛徽章:
14
处女座
日期:2013-11-26 09:21:15操作系统版块每日发帖之星
日期:2016-03-25 06:20:00操作系统版块每日发帖之星
日期:2016-03-22 06:20:00操作系统版块每日发帖之星
日期:2016-03-21 06:20:00数据库技术版块每日发帖之星
日期:2015-11-13 06:20:00操作系统版块每日发帖之星
日期:2015-11-01 06:20:002015亚冠之卡尔希纳萨夫
日期:2015-09-29 13:31:42IT运维版块每日发帖之星
日期:2015-08-13 06:20:00IT运维版块每日发帖之星
日期:2015-08-10 06:20:00数据库技术版块每日发帖之星
日期:2015-08-06 06:20:00双鱼座
日期:2014-07-17 15:08:51卯兔
日期:2014-04-08 09:54:34
5 [报告]
发表于 2012-09-25 09:57 |只看该作者
congfu 发表于 2012-09-25 08:52
大哥,我是在windows下操作的oracle,


但是你自己要做for循环啊

论坛徽章:
5
天蝎座
日期:2014-01-23 12:27:392015亚冠之德黑兰石油
日期:2015-05-14 13:33:042015年亚洲杯之乌兹别克斯坦
日期:2015-03-06 14:10:38天秤座
日期:2014-01-24 15:03:052015亚冠之德黑兰石油
日期:2015-08-27 13:43:58
6 [报告]
发表于 2012-09-25 11:34 |只看该作者
推荐楼主看一下提问的智慧!
http://bbs.chinaunix.net/thread-113564-1-1.html

论坛徽章:
0
7 [报告]
发表于 2012-10-29 08:18 |只看该作者
我也一直在找这个答案

论坛徽章:
0
8 [报告]
发表于 2012-10-29 09:38 |只看该作者
DECLARE
v_days INTEGER;
v_start VARCHAR2(10);
v_end   VARCHAR2(10);
v_1 varchar2(3);
v_2 varchar2(;
v_3 INTEGER;
v_enddays VARCHAR2(10);
begin
  v_1 := 'ALL';
  v_2 := '%';
  v_start :='20120901';--开始日期
  v_end   :='20121031';--结束日期
  v_days :=to_date(v_end,'yyyy-mm-dd')-to_date(v_start,'yyyy-mm-dd');--结束日期和开始日期之间的日期差
  for v_3 in 0..v_days LOOP
  v_enddays :=to_char(to_date(v_start,'yyyy-mm-dd')+v_3,'yyyymmdd');--循环之后的结束日期
  dbms_output.put_line(v_enddays);
  end loop;
end;

上边的是ok的,直接粘贴运行就行了!

论坛徽章:
1
数据库技术版块每日发帖之星
日期:2016-03-20 06:20:00
9 [报告]
发表于 2013-01-08 21:16 |只看该作者
多谢了!哥们。
多向你学习
您需要登录后才可以回帖 登录 | 注册

本版积分规则 发表回复

  

北京盛拓优讯信息技术有限公司. 版权所有 京ICP备16024965号-6 北京市公安局海淀分局网监中心备案编号:11010802020122 niuxiaotong@pcpop.com 17352615567
未成年举报专区
中国互联网协会会员  联系我们:huangweiwei@itpub.net
感谢所有关心和支持过ChinaUnix的朋友们 转载本站内容请注明原作者名及出处

清除 Cookies - ChinaUnix - Archiver - WAP - TOP