开发者社区> 问答> 正文

java中0的问题(依据0统计数量时出错)? 400 报错

java中0的问题(依据0统计数量时出错)? 400 报错

 大侠们:

        我使用sql语句和后台程序代码统计航班数量,如果依据大于等于1的值做统计,他们两个得出的结果是一样的;如果依据0做统计,结果是不一样,谁知道怎么回事(0不是除数)?先谢谢各位了。。。

问题是:比如通过 sql语句统计的结果是60个,那么统计后台程序统计的就是67个,总之,如果依据0来统计,后台程序的结果就比sql语句的结果多几条数据。

我把统计使用的sql语句和核心代码都帖子下面了,如果有不明白的可以留言告诉我

我觉得问题出在时间的换算上

重要的代码是:

long diff = processTime.getTime()
- flight.getSTD().getTime();
int hoursDelayed = (int) (diff / (1000*60*60));
//根据延误的时间长短,与响应的条件进行比对
if (hoursDelayed >= ) {
count++;
}

processTime,它的值为系统当前时间

params.get("FDDT").getThreshold(),它的值为0

 

该处是统计数量的sql语句:

--数量统计是离港航班 延误 atd为null 过滤掉共享 当日航班 还有一个条件是:拿当前告警处理时间减去std,然后与fddt的时间进行比较
--下面是按照业务逻辑,书写的语句

select count(e.flight_no),e.operation_date,e.flight_no,
         sysdate,e.std,
          floor((to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - to_date(to_char(e.STD,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24) 小时,
          floor((to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - to_date(to_char(e.STD,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24*60) 分钟,
          (to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - to_date(to_char(e.STD,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24
          from epms_flight_info e
          left join v_epms_flightinfo v
          on e.operation_date=v.OPERATION_DATE and e.flight_no=v.FLIGHT_NO and e.aord=v.AORD and e.repeat_count=v.REPEAT_COUNT
          where   e.Recent_Abnormal_Status='D'
          and e.ATD is null
          AND e.AORD='D'
          and v.CODE_SHARE1 is null
          and e.std < to_date(to_char(sysdate+1, 'YYYYMMDD') || '040000', 'YYYYMMDDHH24MISS')  
      
    and 
          floor((to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - 
          to_date(to_char(e.std,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24) >= 0
          group by e.operation_date, e.flight_no, sysdate, e.std, 
          floor((to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - 
          to_date(to_char(e.STD,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24), 
          floor((to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - 
          to_date(to_char(e.STD,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24*60), 
          (to_date(to_char(sysdate,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss') - 
          to_date(to_char(e.STD,'yyyy-mm-dd hh24:mi:ss'),'yyyy-mm-dd hh24:mi:ss'))*24;

该处是统计数量的后台代码:

for (FlightInformation flight : Global.allCacheFlight) {
				if (flight.getAbnormalStatus() == null)
					continue;
				if (flight.getArriveOrDeparture().equals("D")
						&& flight.getAbnormalStatus().equals("D")
						&& flight.getATD() == null) {
					//依次判断航班是否延误
					long diff = processTime.getTime()
							- flight.getSTD().getTime();
					int hoursDelayed = (int) (diff / (1000*60*60));
					//根据延误的时间长短,与响应的条件进行比对
				if (hoursDelayed >= params.get("FDDT").getThreshold()) {
						count++;
					}
				}
			}

 

展开
收起
爱吃鱼的程序员 2020-06-01 10:25:12 501 0
1 条回答
写回答
取消 提交回答
  • https://developer.aliyun.com/profile/5yerqm5bn5yqg?spm=a2c6h.12873639.0.0.6eae304abcjaIB

    该问题自己解决了

    2020-06-01 10:25:14
    赞同 展开评论 打赏
问答分类:
问答地址:
问答排行榜
最热
最新

相关电子书

更多
Spring Cloud Alibaba - 重新定义 Java Cloud-Native 立即下载
The Reactive Cloud Native Arch 立即下载
JAVA开发手册1.5.0 立即下载