问答文章1 问答文章501 问答文章1001 问答文章1501 问答文章2001 问答文章2501 问答文章3001 问答文章3501 问答文章4001 问答文章4501 问答文章5001 问答文章5501 问答文章6001 问答文章6501 问答文章7001 问答文章7501 问答文章8001 问答文章8501 问答文章9001 问答文章9501

在oracle数据库中关于查询的问题

发布网友 发布时间:2022-04-08 20:32

我来回答

2个回答

懂视网 时间:2022-04-09 00:53

    在最近的一个项目中,有一个需求就是要查询数据库中前几个月的历史数据,但是由于自己考虑不全面造成了程序的bug,现在将这一块好好作一个总结,希望以后不再犯这种很低级的错误,首先贴出查询中用到的一个子函数,然后就此作出详细的分析:

 private string AddMonths(string originalTime, int months)
 {
  string returnString = string.Empty;
  string[] dataAndTime = originalTime.Split(new char[] { ‘ ‘ });
  if (dataAndTime.Length > 0)
  {
  string date = "";
  if (!string.IsNullOrWhiteSpace(dataAndTime[0]))
  {
   date = dataAndTime[0];
   string[] yearMonthDay = date.Split(new char[] { ‘/‘ });
   int year = int.Parse(yearMonthDay[0]);
   int month = int.Parse(yearMonthDay[1]);
   int day = int.Parse(yearMonthDay[2]);
   if (months != 0)
   {
   if (month > months)
   {
    month = month - months;
    //判断该月总共有多少天
    int days = DateTime.DaysInMonth(year, month);
    if (day > days)
    day = days;
    returnString = year.ToString() + "/" + month.ToString() + "/" + day.ToString() + " " + dataAndTime[1];
   }
   if (month ==months)
   {
    month = 12;
    year = year - 1;
    int days = DateTime.DaysInMonth(year, month);
    if (day > days)
    day = days;
    returnString = year.ToString() + "/" + month.ToString() + "/" + day.ToString() + " " + dataAndTime[1];
   
   }
   if (month < months)
   {
    month = month + 12 - months;
    year = year - 1;
    int days = DateTime.DaysInMonth(year, month);
    if (day > days)
    day = days;
    returnString = year.ToString() + "/" + month.ToString() + "/" + day.ToString() + " " + dataAndTime[1];
   }
   }
   else
   {
   returnString = originalTime;
   }
  }
  }
  return returnString;
 }

  这个函数中有两个参数,第一个originalTime代表的是从数据库中查询到的最近的日期,第二个参数就是months,表示从最近日期往前推多少个月,在我们的程序中首先通过分割字符串的方式来获取当前的年月日,就我们当前的月份month和查询周期months作比较,第一种情况就是当前月份大于查询周期,这种情况获取的最后月份就是month和months作差,在这里年不需要变化,但是必须注意到的一点是day的取值,举个例子从数据库中查询到的当前刚好是12月31号,此时如果查询周期为6个月,直接返回差值6月31号的话程序必然会出错,因为6月份没有31号,这点必须引起重视,所以我们在程序中才有了如下的判断,            

int days = DateTime.DaysInMonth(year, month)

if (day > days)

day = days;

   这里面有个函数DateTime.DaysInMonth(year, month)这个函数是用来判断某一年某一月总共有多少天,如果当前日期天数超过了查询后的日期当月的天数那么只能取当月的最大天数了,就像12月31号往前推6个月一定是6月30号而不是6月31号,这些简单的逻辑问题一定不能出错,这个是需要特别注意的。根据month和months的关系必须分三种情况来讨论,即:month>months和month=months以及month<months三种情况进行讨论一种都不能少,总之返回的日期必须合理年,月份必须在1到12之间,返回的天必须在当月的合理范围内,这个需要在写代码的时候十分注意,并及时作出总结,并未以后吸取经验和教训。

从Oracle数据库中查询前几个月数据时需要注意的一些问题

标签:

热心网友 时间:2022-04-08 22:01

也就是查询该表中年龄字段为空的记录

select name
from tablename
where age is null;
声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com
下载了优酷播放器iku免登录版,安装在没联网的电脑上。查看不了本地的... 播放FLV的几个问题在线等 劲舞团真的有那么好玩吗? 为什么别人说劲舞团是世界上最淫荡的游戏.. 劲舞团好玩吗?? 030221 1020 060414 2168 060417 这几组数是什么意思啊!有知道的大哥请... ...分签约短信服务-【广东农信】”是什么意思? 2168是什么意思爱情 事业单位面试成绩79分算好的吗 事业编面试成绩76分算高分吗 求《京城81号》高清下载地址? 周星驰演的无相神功的电视剧叫什么 求。各种关于青楼名妓,或者说是各种才女的电影。电视。江南名妓,才女,苏小小。之类的。 浪琴6针手表 都什么意思,怎么调 哪部电影里的演员叫罗刚罗浩 电影《唐伯虎点秋香》里,秋香的原型是谁? 有一部香港电影树里面有女鬼屋子里的人正在讲鬼故事 罗家英 演一个鬼片他演得是一个大师,求电影名字 青楼名妓变鬼是什么电影 急求~~~形容词副词的比较级 在哪里可以下载到《青楼名妓》啊??? does 比较级 fall现在分词 串串香店生意不好怎么解决 fall现在分词()、high比较级()、little反义词.Wrte现在分词()、big比较级( 我想在老家开一家串串香店,会不会好做呀?生意能行吗? falls ill怎么读 落下的原藉读音和比较级的读音怎么读? 串串香火锅店前景如何?加盟还是自己开店合适呢? 开一家串串香店赚钱吗? 青楼名妓李师师是谁演的,还有哪些电影,急 英国姓氏有哪些? 英国的姓氏大全 只要姓氏,不要人名,全部列举 中英文都要,不用解释 英语姓氏什么最多? 群聊清空聊天记录是只清空自己的吗 英文姓大全 越多越好 英文的姓氏是在前还是在后 我在群里清空聊天记录别人的还有吗 清空聊天记录是不是把刚才发到群里的照片可以删掉 别人也看不见了 QQ怎么删除群聊天记录,保留个人聊天记录?三百来个群挨个删费劲? 问下千牛怎么设置离线自动回复啊,它这儿的状态只有忙碌和离开,就是没有离线,我不可能电脑24小时都开 怎么样用CASS7.0绘制纵断面图 你好,我电脑千牛跟手机千牛都收不到买家信息,请问下是怎么回事,该设置的都设置了? CASS里程文件生成 电脑千牛总是掉线请问什麼原因 我的UG NX4.0安装完成后,打不开。出现Initialization error -UG_TMP_DIR was set to a directory with an 各位大神南方CASS这种纵断面怎么弄的? 东京ブルドック 02 INU--002 女主角的名字 CASS中画断面的4种办法分别有什么区别 求&lt;Urahara ff-紫咲ほたる&gt;的罗马音歌词~~~