在oracle中根据给出的两个时间,查询出这一时间段的数据。
有几个方法:
1.
select * from tablename where time>= to_date(' "+beginTime+" ','yyyy-mm-dd') and time<=to_date("+endTime+" ','yyyy-mm-dd')
这一方法包括beginTime,不包括endTime,要是想包括endTime,可以将endTime往后推一天,我用的是字符串拼接的方式:
String[] end=endDate.split("-");
if(end[1] == "1" || end[1] == "3" || end[1] == "5" || end[1] == "7" || end[1] == "8" || end[1] == "10" || end[1] == "12"){
if(end[2] == "31"){
int end11=Integer.parseInt(end[1]);
end11+=1;
end[1]=Integer.toString(end11);
end[2]=String.valueOf(01);
}
}else if(end[1] == "4" || end[1] == "6" || end[1] == "9" || end[1] == "11"){
if(end[2] == "30"){
int end11=Integer.parseInt(end[1]);
end11+=1;
end[1]=Integer.toString(end11);
end[2]=String.valueOf(01);
}
}else if(end[1] == "2"){
//闰年的情况
int end00=Integer.parseInt(end[0]);
if(end00%4==0 && end00%100!=0){
if(end[2] == "29"){end[2]=String.valueOf(01);}
}else if(end00%400==0){
if(end[2] == "29"){end[2]=String.valueOf(01);}
}else{
if(end[2] == "28"){end[2]=String.valueOf(01);}
}
}
int end22=Integer.parseInt(end[2]);
end22+=1;
end[2]=Integer.toString(end22);
endDate=end``
0]+"-"+end[1]+"-"+end[2];
因为加了闰年判断和是否是当月最后一天的判断所以比较繁琐,但是中心思想就是把获取的时间字符串根据分隔符拆分成数组,然后天数加一,如果是当月最后一天德华,月数加一。
2.
select * from tablename where to_char(time,'yyyy-mm-dd')>='"+beginTime+"' and to_char(time,'yyyy-mm-dd')<='"+endTime+"'
这一方法包含beginTime和endTime。