StringBuffer sqlLeave = new StringBuffer();
sqlLeave.append("/*dialect*/ SELECT count(1) c FROM T_HR_ATS_LeaveBillEntry entry").append("\n");
sqlLeave.append("left join T_HR_ATS_LeaveBill bill ON ENTRY.FBILLID = BILL.FID").append("\n");
sqlLeave.append("left join t_bd_person person ON ENTRY.FPERSONID = PERSON.FID").append("\n");
sqlLeave.append(" where person.fid = '"+personid+"'").append("\n");
sqlLeave.append(" and to_char(entry.FRealBeginTime,'YYYY-MM-DD HH24:MI:SS')<='" + sdf.format(begindate) + "' ").append("\n");
sqlLeave.append(" and to_char(entry.FRealEndTime,'YYYY-MM-DD HH24:MI:SS')>'" + sdf.format(begindate) + "' ").append("\n");
sqlLeave.append(" or ( person.fid = '"+personid+"' and to_char(entry.FRealBeginTime,'YYYY-MM-DD HH24:MI:SS')<'" + sdf.format(enddate) + "' ").append("\n");
sqlLeave.append(" and to_char(entry.FRealEndTime,'YYYY-MM-DD HH24:MI:SS')>='" + sdf.format(enddate) + "' ) ").append("\n");
sqlLeave.append(" or ( person.fid = '"+personid+"' and to_char(entry.FRealBeginTime,'YYYY-MM-DD HH24:MI:SS')>='" + sdf.format(begindate) + "' ").append("\n");
sqlLeave.append(" and to_char(entry.FRealEndTime,'YYYY-MM-DD HH24:MI:SS')<='" + sdf.format(enddate) + "' and entry.FRealBeginTime !=entry.FRealEndTime ) ").append("\n");
总结:A B两个时间段 A为已有时间段,B为想插入的时间段
A开始<=B开始 A结束>B开始 or
A开始>B结束 A结束<=B开始 or
A开始>=B开始 A结束<=B结束 A开始<>B开始