发布网友 发布时间:2022-04-24 12:02
共3个回答
懂视网 时间:2022-05-07 03:23
@漫天de光: 整了半天,你就是想一句话搞定是吧? 基本上没有意义,如果你不纠结于一句SQL搞定的话,我相信你也很快能写出代码来。 需求不明确的地方是,间隔小于1分钟,还是使用标准的分钟隔离。(08:57:59和08:58:03算两个分钟段)这个就当你说清楚了,然后
@漫天de光: 整了半天,你就是想一句话搞定是吧?
基本上没有意义,如果你不纠结于一句SQL搞定的话,我相信你也很快能写出代码来。
需求不明确的地方是,间隔小于1分钟,还是使用标准的分钟隔离。(08:57:59和08:58:03算两个分钟段)这个就当你说清楚了,然后示例子中没有说明,如果这样的数据怎么处理
08:57:59
08:58:03
08:58:12
08:59:02
08:59:50
如果是相隔不超过1分钟,就一直取下去,直到出现超过1分钟的时间,(这样描述会不会更加准确一些,或者更不容易引起误解?)
象这样的,你要么增加一个字段,代码处理结果放在那个字段里面,以后就可以GROUP BY了。
要么就是这时候使用一句SQL或者使用多句SQL语句的重要性并不是那么强。
我是反对唯性能论的。
热心网友 时间:2022-05-07 00:31
public static void main(String[] args) {
// TODO Auto-generated method stub
String[] date = new String[] { "2014-03-01", "2014-03-03",
"2014-03-04", "2014-03-11", "2014-03-13" };
Object[] result = getResult(date);
String[] startDate = (String[]) result[0];
String[] endDate = (String[]) result[1];
int index = 0;
for (String start : startDate) {
System.out.println(String.format("%d.start:%s end:%s", index + 1,
start, endDate[index]));
index++;
}
}
public static Object[] getResult(String[] date) {
// 对数组进行排序
Arrays.sort(date);
// 声明集合保存结果;
List<String> startDate = new ArrayList<String>();
List<String> endDate = new ArrayList<String>();
// 声明日期格式化格式
SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd");
for (int index = 1; index < date.length; index++) {
try {
String start = date[index - 1];
String end = date[index];
// 判断是否相等或相临;相等或相临将日期分别添加至开始/结束列表,否则单独处理
if ((sdf.parse(end).getTime() - sdf.parse(start).getTime())
/ 1000 / 60 / 60 / 24 <= 1) {
startDate.add(start);
endDate.add(end);
index++;
} else {
startDate.add(start);
endDate.add(start);
// 若最后的值执行到此,单独处理
if (index == date.length - 1) {
startDate.add(end);
endDate.add(end);
}
}
start = null;
end = null;
} catch (Exception e) {
System.out.println("转换日期格式异常!");
}
}
return new Object[] { startDate.toArray(new String[] {}),
endDate.toArray(new String[] {}) };
}
热心网友 时间:2022-05-07 01:49
题是看懂了,然后就不知道你要干嘛了