比如说现在数据库里 开始时间08:30 结束时间10:30
13:30 15:30
17:30 19:30
. .
. .
. .
不一定是三组数据
我现在要插入一个时间段 开始时间 a 和结束时间 b
这个时间段不能在库中任何一个时间段里 或者不能出现交叉现象
请高手解答!
13:30 15:30
17:30 19:30
. .
. .
. .
不一定是三组数据
我现在要插入一个时间段 开始时间 a 和结束时间 b
这个时间段不能在库中任何一个时间段里 或者不能出现交叉现象
请高手解答!
import java.util.List;public class TimeInsert { /**
* @param args
*/
public static void main(String[] args) {
String str1 = "13:35";
String str2 = "15:25";
List<String> listB = new ArrayList<String>();
List<String> listE = new ArrayList<String>();
listB.add("09:38");
listE.add("12:35");
listB.add("14:00");
listE.add("17:32");
TimeInsert ti = new TimeInsert();
System.out.println(ti.insertValidate(str1, str2, listB, listE)); }
public boolean insertValidate(String beginDate,String endDate,List<String> beginDateList,List<String> endDateList){
Integer begin = trimChar(beginDate);
Integer end = trimChar(endDate);
List<Integer> beginList = new ArrayList<Integer>();
List<Integer> endList = new ArrayList<Integer>();
for(int i = 0 ; i < beginDateList.size();i++){
beginList.add(trimChar(beginDateList.get(i)));
endList.add(trimChar(endDateList.get(i)));//一个开始时间对应一个结束时间
}
for(int i = 0 ; i < endList.size() ; i ++){
//时间有重叠有三种情况:
//1.插入时间的开始时间小于已经存在的一段时间的开始时间,但结束时间位于开始时间和结束时间之间(重叠)
//2.插入时间的开始时间小于已经存在的一段时间的开始时间,但结束时间大于结束时间(全包含)
//3.插入时间的开始时间大于一段已经存在的时间的开始时间,但是却小于这段时间的结束时间,且结束时间大于这段时间的结束时间
//画一个时间图,可以总结出:他们都是开始时间小于已经存在的一段时间的结束时间,但结束时间大于这段时间的开始时间
if(begin < endList.get(i) && end > beginList.get(i)){
return false; //存在重叠
}
}
return true;
} //刚时间转换成整型
public Integer trimChar(String str){
int index = str.indexOf(":");
String newString = str.substring(0,index) + str.substring(index+1,str.length());
return Integer.parseInt(newString);
}
}
y范围(开始时间,终止时间)原来是一个正方形的平面图像,那插入的时间点不再这个正方形中你说是什么情况呢?起始时间大于终止时间即可了吧!如果无序,大于MAX(点序列就行了)换成sql
insert 内容 into table name select fields from tablename where not exists(
加入select判断应该就行了!传入插入值
)