내 프로젝트에서 시간 범위를 계산해야합니다. 현재, 내 쿼리와 일치하는 모든 TimeStamp를 가져와 List<>
에 저장하고 있습니다. 그런 다음 목록을 반복하여 간격이 10 초 이하인지 확인한 다음 함께 추가합니다. 10 초를 초과하는 것은 무시됩니다. 저를 위해 할 수있는 SQL 쿼리가 있다면 궁금합니다. 나는 약간의 검색을했지만 아무 것도 찾지 못했습니다. 본질적으로, 나는 그렇게 할 필요가 없다면 너무 많은 정보를 메모리에 저장할 필요가 없다. 여기 내 List<>
을 통해 내가 반복 사용하고 방법은 다음과 같습니다타임 스탬프를 기반으로 시간 범위를 계산하는 SQL 쿼리
private static TimeSpan TimeCalculations(IList<DateTime> timeStamps)
{
var interval = new TimeSpan(0, 0, 10);
var totalTime = new TimeSpan();
for (var j = 0; j < timeStamps.Count - 1; j++)
{
if (timeStamps[j + 1].Subtract(timeStamps[j]) > interval) continue;
var timeDifference = timeStamps[j + 1].Subtract(timeStamps[j]);
totalTime = totalTime.Add(timeDifference);
}
return totalTime;
}
현재 검색되는 데이터의 가치가 10 400K에 행 어디서나 할 수있는 데이터입니다. 다음은 샘플입니다.
2006-09-07 11:46:09
2006-09-07 11:46:19 - 10 seconds
2006-09-07 11:46:20 - 1 second
2006-09-07 11:46:36
2006-09-07 11:47:49
2006-09-07 11:47:53 - 4 seconds
2006-09-07 11:48:02 - 9 seconds
2006-09-07 11:48:15
2006-09-07 11:48:29
2006-09-07 11:48:34 - 5 seconds
2006-09-07 11:54:29
2006-09-07 11:54:39 - 10 seconds
2006-09-07 11:54:49 - 10 seconds
2006-09-07 11:54:59 - 10 seconds
약 59 초가 소요됩니다. 이것은 제가 찾고있는 결과입니다.
사용중인 데이터베이스가 SQLite입니다. 답변을 보면
편집
, 내 질문은 충분히 아주 철저한 아니라는 것을 알 수 있습니다. TimeStamps를 가져 오기위한 현재 쿼리만으로 충분합니다. 내가 뭘 찾고있는 쿼리 간격을 10 초 이하의 경우 그들 사이의 차이를 함께 추가 할 수 있습니다.
데이터베이스에서 작업하려는 데이터에 대해 더 자세히 설명해 줄 수 있습니까? 테이블 구조, 샘플 데이터, 샘플 데이터에서 원하는 결과가 좋은 시작이 될 것입니다 ... –
흠, 당신은 linq 라이브러리를 사용할 수 있습니까? – Nomad101
@ Nomad101 예, 할 수 있습니다. – MyCodeSucks